如何在nodejs服务器上使用android socketio模块在两个人之间进行聊天?

时间:2014-08-07 08:36:40

标签: android node.js websocket socket.io

我在node.js服务器上用android开发了一个聊天应用程序。我做了一个简单的聊天应用程序。但是每个人都参与了同一个房间。我想只和两个人聊天。我怎么能这样做?我应该向服务器发送什么信息?例如sender_name,receiver_name,json格式的消息。

  

- 如何列出在线用户?

     

- 我怎样才能在两个人之间开始聊天?

有什么要求?

1 个答案:

答案 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)。