我试图在一个中间件的某些房间添加新的套接字,但是当一个套接字(客户端)的第一个放弃避风港时它似乎无法正常工作。当套接字(客户端)发送'消息时,然后它会工作并成为房间的一部分。
这是正常的行为吗?
我是否必须加入“连接”空间?事件
app.js(服务器端)
var app = require('http').createServer(function (req, res){
res.end('no rest');
});
var io = require('socket.io')(app);
app.listen(7076);
io.use(function(socket, next){
socket.join('toto');
next();
});
io.on('connection', function (socket) {
socket.on('message', function (data) {
socket.to('toto').emit('message', data);
});
});
答案 0 :(得分:3)
根据documentation,。您应该使用以下形式之一:socket.to('toto').emit...
语法不正确
io.to('toto').emit('message', data);
socket.broadcast.to('toto').emit('message', data);
答案 1 :(得分:0)
事实上,问题根本没在服务器端......我的客户端我没有描述。 当点击按钮发送消息时,这个函数叫做
function messageManagement(cb)
{
var message = $('#message_text').val();
if (!message || message.length == 0)
message = 'I am watching you';
socketClient.emit('message', {message:message});
socketClient.on('message', function (data){
console.log(data.messsage);
drawMessage(data);
});
}
正如您在每次客户端发出消息时所看到的那样,它也会注册到响应事件。因此,每当我发出一条消息时,再注册一次同一事件......这很混乱,所以我改变了它并且它有效..