socket.io没有使用socket.to(' myroom')发送到房间

时间:2016-01-07 18:06:16

标签: node.js express socket.io

我正在使用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?');

因此,连接房间功能有些奇怪。有几点需要注意,我有一些中间件可以从快递中获取ID - 不要认为这有任何影响。另外,我为userID创建了一个单独的空间。

用户可以同时进入两个房间吗?我不确定是什么导致了这一点。

谢谢,

1 个答案:

答案 0 :(得分:0)

似乎无论是或者都不会将响应发送回同一个客户端。上面的代码确实发送给了房间里的其他客户。