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

Posted

技术标签:

【中文标题】如何在nodejs服务器上使用android socketio模块在两个人之间进行聊天?【英文标题】:how to make a chat between two people with android socketio module on nodejs server? 【发布时间】:2014-09-30 10:02:00 【问题描述】:

我致力于在 node.js 服务器上使用 android 开发一个聊天应用程序。我制作了一个简单的聊天应用程序。但是每个人都参与到同一个房间里。我只想在两个人之间进行聊天。我该怎么做?我应该向服务器发送什么信息?例如sender_name,receiver_name,json格式的消息。

-如何列出在线用户?

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

对它有什么要求?

【问题讨论】:

> 我应该向服务器发送什么信息? - 你怎么想? > 我只想在两个人之间进行聊天 - 然后进行,问题是模棱两可的。 > - 如何列出在线用户? - 您在服务器上保留在线用户列表,并在需要时将其传递给客户端。 如何保存在线用户列表?现在我可以发送数据(发件人、消息),但可以在单个屏幕上与连接到服务器的任何人交谈。但我不想要这个。当这不是唯一的两个人交谈时 ***.com/a/65787883/3904109 :完整的工作解决方案 【参考方案1】:

这可能会有所帮助:

我建议为您聊天的每个房间设置命名空间。我在自己的代码中做了类似的事情。注意:在 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://***.com/a/24805494/3842050)。

【讨论】:

您可以为每对希望聊天的用户设置命名空间,这似乎是您在 OP 中想要的。 @OP 这行得通吗?我已经快一个月没有看到回复了。

以上是关于如何在nodejs服务器上使用android socketio模块在两个人之间进行聊天?的主要内容,如果未能解决你的问题,请参考以下文章

在红帽上安装 nodejs

如何将 Android 应用程序连接到 python-socketio 后端?

进阶之初探nodeJS

进阶之初探nodeJS

如何在 Nodejs 中创建服务器?

如何让apache和nodejs共用80端口