【问题标题】:How to let 2 socket join the same room to chat (socket.io)如何让 2 个套接字加入同一个房间聊天(socket.io)
【发布时间】:2016-12-20 00:22:57
【问题描述】:

我有一个问题,但研究了很多天,但仍然没有解决它。 我将聊天用户投射到用户 socket.io 和 nodejs。 我是用户 A,当我在应用程序的用户列表中单击用户 B 时,它将让用户 A 和 B 加入同一个房间(set roomname is (IdOfUserA)_(IdOfUserB))。 我如何在服务器端做同样的事情,请帮助我或向我展示有类似问题的帖子。 非常感谢。

【问题讨论】:

    标签: android node.js socket.io


    【解决方案1】:

    在伪代码中我会做这样的事情:

    在客户端

    socket.emit('chat-with-user-b', {userb : IdOfUserB}); 
    socket.on('chat-with-me', function(roomID){
       // open tchat etc..
    });
    

    在服务器端:

    io.on("connection", function(socket){
       socket.on('chat-with-user-b', function(IdOfUserB){
          var roomID = IdOfUserB + '_' + socket.id; // create a unique room id
          socket.join(roomID); // make user A join room
          io.sockets[IdOfUserB].join(roomID); // make user B join  room
          io.sockets.in(roomID).emit('chat-with-me', roomID);  // send join event to both.
       });
    });
    

    【讨论】:

    • 谢谢,但我不明白 io.sockets[withUser].join(roomID),withUser 是客户端上的 IdOfUserB 可以指定用户 B 的套接字吗?
    • 确实有点混乱,我更新了例子。希望对你有帮助
    • 所以 IdOfUserB 是用户 B 的 socket.id,对吧?如何在客户端获取用户 B 的 socket.id 来做 socket.emit('chat-with-user-b', {userb : IdOfUserB})。
    • 在连接时,您可以以非常简单的方式发送连接的套接字列表,可以这样做:io.on("connection", function(socket){ socket.emit('list-of-clients', io.sockets.connected); .. } 在客户端上:socket.on('list-of-client', function (list){ list.each(....) // 做一些类似显示的事情 }`
    猜你喜欢
    • 1970-01-01
    • 2022-10-31
    • 1970-01-01
    • 2017-05-12
    • 2011-11-18
    • 2020-10-28
    • 2021-10-28
    • 1970-01-01
    • 2021-11-12
    相关资源
    最近更新 更多