我正在使用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创建了一个单独的空间。
用户可以同时进入两个房间吗?我不确定是什么导致了这一点。
谢谢,
答案 0 :(得分:0)
似乎无论是或者都不会将响应发送回同一个客户端。上面的代码确实发送给了房间里的其他客户。