【发布时间】: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 创建了一个单独的房间。
用户可以同时在两个房间吗?我不确定是什么原因造成的。
谢谢,
【问题讨论】: