【发布时间】:2016-03-01 14:03:18
【问题描述】:
我根据许多关于 PHP、socket.io、redis 和 node 的教程创建了一个基本的聊天室。我创建了一个 .js 作为服务器来创建 Web 套接字,以允许浏览器获取广播并自动更新。我的问题是如何修改我必须允许有多个房间/频道的内容?在本教程中,它将服务器设置为订阅“测试频道”,但我需要用户根据他们应该与谁见面来订阅不同的房间。非常感谢任何建议、代码提示或指向其他教程。
节点运行的我的 .js 服务器:
var server = require('http').Server();
var io = require('socket.io')(server);
var Redis = require('ioredis');
var redis = new Redis();
redis.subscribe('test-channel');
redis.on('message',function(channel, message){
message = JSON.parse(message);
io.emit(channel + ':' + message.event_type, message.data);
});
server.listen(3000);
我的 php 文件脚本现在只显示消息:
<script>
var socket = io('http://localhost:3000');
socket.on('test-channel:CampaignJobCompleted', function (data) {
console.log(data);
$( "#messages" ).append( "<p>"+data.message+"</p>" );
});
</script>
我的广播数据的 Laravel 控制器:
$data = [
'event_type' => 'CampaignJobCompleted',
'data' => [
'campaign_name' => 'Sample Campaign',
'message' => 'I am sending a message'
]
];
\LRedis::publish('test-channel',json_encode($data));
当用户要求与另一个人见面时,房间/频道是预先确定的,所以我想在他们进入房间之前注入频道名称。
感谢任何人提供的任何帮助。
【问题讨论】:
标签: php node.js redis socket.io laravel-5.1