首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用socket.io、react native、nodejs管理聊天应用的多套接字连接

如何使用socket.io、react native、nodejs管理聊天应用的多套接字连接
EN

Stack Overflow用户
提问于 2018-08-18 14:18:37
回答 1查看 1.7K关注 0票数 2

我想知道如何用socket.io动态创建聊天室。我看过这个问题:What is the proper way to manage multiple chat rooms with socket.io?,但它并不是我想要的。我想用我预先确定的id打开聊天室,这样我就可以跟踪我的数据库、客户端等中的不同对话。我已经知道如何处理向适当客户端发送新消息,但我不知道如何动态地建立连接,或者我是否必须同时管理多个聊天室中的多个用户的多个套接字。

下面是node.js代码:

代码语言:javascript
复制
websocket.on('connection', (socket) => {
  console.log(socket);
  clients[socket.id] = socket;
  socket.on('5b17803f134204f7f3e274e0-5b17703f134204f7f3e274e0', (message) => onMessageReceived(message, socket));
  socket.on('5b17803f134204f7f3e274e0-5b17703f134204f7f3e274e0-join', (chatInfo) => _sendExistingMessages(chatInfo, socket));
});

如你所见,我希望替换“5b...”具有动态特性的字符串。用于建立此连接的客户端代码只有一行:

代码语言:javascript
复制
this.socket = SocketIOClient(port);

有没有办法做到这一点?后续的问题还包括如何管理所有这些不同的套接字?也许是一组套接字?如有任何帮助,将不胜感激,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-19 00:29:43

使用socket.io,你通常只需要对你想要的房间执行一个socket.join(),这个房间可以是你的动态房间名。从那里,您可以只向房间发出一个事件。

代码语言:javascript
复制
io.on('connection', function (socket) {
    socket.join('5b17803f134204f7f3e274e0-5b17703f134204f7f3e274e0', function (err) {
        if(err) {
            throw err
        }
        io.to('5b17803f134204f7f3e274e0-5b17703f134204f7f3e274e0').emit('joined', {})
    })
})

如果上述示例不起作用,您可能需要在套接字上设置另一个事件处理程序,然后让您的客户端发送该事件加入房间,从那里您可以使用返回的数据向客户端发起回调

代码语言:javascript
复制
socket.on('joinRoom', function (data, callback) {
    socket.join(data, function (err) {
        if(err) {
            return callback("error")
        }
        return callback("joined")
    })
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51905872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档