我怎样才能使私人聊天室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,但也取决于您的平台)

希望能帮助到你!

Interesting Posts