我怎样才能使私人聊天室sockjs?
我试图build立一个聊天系统,只有两个用户可以互相交谈(很像Facebook的聊天)
我尝试了多路复用,使用mongoDB的_id作为名称,所以每个通道都是唯一的。
我面临的问题是我不能将消息直接指向单个客户端连接。
这是首先发送消息的客户端代码
$scope.sendMessage = function() { specificChannel.send(message) $scope.messageText = ''; };
这是接收消息的服务器端
specificChannel.on('connection', function (conn) { conn.on('data', function(message){ conn.write('message') } }
当我发送一条消息到任何一个频道时,每个频道仍然收到这条消息。
我怎样才能使每个客户端只收听发送到特定频道的消息?
看来SockJS不支持“私人”频道。 我使用下面的解决scheme来解决类似的问题:
var channel_id = 'my-very-private-channel' var connection = new SockJS('/pubsub', '') connection.onopen = function(){ connection.send({'method': 'set-channel', 'data': {'channel': channel_id}}) }
后端解决scheme针对每个技术堆栈都是特定的,所以我不能在这里给出一个通用的解决scheme。 总体思路如下:
1)parsing“on_message”函数中的消息来查找请求的“方法名称”
2)如果方法是“set-channel” – >将“self.channel”设置为这个值
3)使用相同的频道向用户播放更多的消息(我使用的是Redis,但也取决于您的平台)
希望能帮助到你!