我在node.js服务器上用android开发了一个聊天应用程序。我做了一个简单的聊天应用程序。但是每个人都参与了同一个房间。我想只和两个人聊天。我怎么能这样做?我应该向服务器发送什么信息?例如sender_name,receiver_name,json格式的消息。
- 如何列出在线用户?
- 我怎样才能在两个人之间开始聊天?
有什么要求?
答案 0 :(得分:2)
这可能会有所帮助:
我建议为您聊天的每个房间设置名称空间。我在自己的代码中做了类似的事情。注意:在socket.io本身中,房间和命名空间彼此略有不同(socket.io有两个:http://socket.io/docs/rooms-and-namespaces/)。
在服务器代码中:
我在socket.on(' connection')下有一个方法,类似于
socket.on('groupConnect', function(group){
var groupNsp = io.of('/' + group);
}
这实质上确保了名称空间存在于所需名称的名称下。当它再次被调用时,它不会搞砸它或重置名称空间。
然后接收消息:
socket.on('message', function(data){
var msg = data.msg;
var nsp = data.nsp;
io.of(nsp).emit('message', msg);
}
您也可以将nsp添加到您已经拥有的数据中,然后再将数据再次发送给客户端。
然后,在客户端代码中:
var socketOut = io.connect('http://yourdomain:1337/');
var someGroupOrMethodToGetGroup;
socketOut.emit('groupConnect', someGroupOrMethodToGetGroup);
var nsp;
setTimeout(function(){
socket = io.connect('http://yourdomain:1377/' + someGroupOrMethodToGetGroup);
socket.on('message', function(msg){
displayMessage(msg);
}
nsp = '/' + someGroupOrMethodToGetGroup;
}, 1500);
然后在我的displayMessage代码中我有:
socketOut.emit('message', { msg: desiredMessage, nsp: nsp });
来自我的另一个答案(https://stackoverflow.com/a/24805494/3842050)。