【问题标题】:socket.io not sending to room using socket.to('myroom').emitsocket.io 不使用 socket.to('myroom').emit 发送到房间
【发布时间】:2016-01-10 18:07:47
【问题描述】:

我使用的是 socket.io 1.4.0。

我正在尝试发送消息以将客户端放入名为“myroom”的房间,然后从客户端向房间发送消息,然后从房间获取响应。但是我没有得到使用

的回应
        socket.to('myroom').emit('message', 'what is going on, party people?');

这是我的客户端代码:

socket.on('connect', function() {
   // Connected, join the booking room for to receive messages for this room
   socket.emit('room', 'myroom');

});


  socket.on('message', function(msg){
    console.log('message: ' + msg);
  });

  socket.emit('booking room message', {roomid: 'myroom', message: 'hello'});

这是我的服务器代码:

// Set up the Socket.IO server
var io = require("socket.io")(server)
    .use(function(socket, next) {
        // Wrap the express middleware
        sessionMiddleware(socket.request, {}, next);
    })
    .on("connection", function(socket) {
        console.log(socket.request.session);

        if (socket.request.session.passport) {


            var userId = socket.request.session.passport.user;

            //Sign up client for the room from client side.
            socket.on('room', function(room) {
                socket.join(room);
                console.log(userId + ' has joined booking room: ' + room);
            });

            //make a room for this user
            socket.join(userId);

            console.log("User ID: " + userId + " connected. socketID: " + socket.id);

            socket.on('disconnect', function() {
                console.log("User ID: " + userId + " disconnected.");
            });


            socket.on('booking room message', function(data) {
                console.log('message sent from browser to a room');
                console.log(data);
                socket.to('myroom').emit('message', 'what is going on, party people?');
            });


        }
    });

当我使用时,我按预期从服务器收到了一条消息:

socket.emit('message', 'what is going on, party people?');

所以加入房间功能发生了一些奇怪的事情。有几点需要注意,我有一些从 express 获取 ID 的中间件 - 不要认为这会产生任何影响。我还为用户 ID 创建了一个单独的房间。

用户可以同时在两个房间吗?我不确定是什么原因造成的。

谢谢,

【问题讨论】:

    标签: node.js express socket.io


    【解决方案1】:

    似乎 to 或 in 都不会将响应发送回同一个客户端。然而,上面的代码确实发送给了房间里的其他客户。

    【讨论】:

      猜你喜欢
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 2013-08-20
      相关资源
      最近更新 更多