套接字的事件绑定被移动到单独的模块:
exports.bind = function(socket) {
socket.on('join', function(data) {
socket.join(data.type);
});
socket.on('message', function(data) {
global.io.sockets.in('rooma').emit('message', data);
});
}
server.js:
var app = express();
//creating socket server
server = http.createServer(app);
io = global.io = require('socket.io').listen(server, {'log level': 3});
io.sockets.on('connection', function(socket) {
//binding events on socket
events.bind(socket, io);
});
问题是,该消息永远不会发送到'rooma'中的客户端。但如果我把它全局发出:
global.io.sockets.emit('message', data);
有效。哪里可以有问题?我已经测试过客户端属于房间了。
答案 0 :(得分:1)
当你从你想要发送信息的房间初始化事件时,这是有效的:
exports.bind = function(socket) {
socket.on('join', function(data) {
socket.join(data.type);
});
socket.on('message', function(data) {
socket.get('room', function (error, room) {
io.sockets.in(room).emit('message', data);
});
});
}