我想知道如何在一个名称空间中共享套接字中设置的数据并在另一个名称空间上访问它?Socket.io在名称空间之间共享套接字数据
我完全知道我可以将数据附加到套接字对象本身。当我将数据附加到一个名称空间并尝试在另一个名称空间上访问它时,会出现问题。
下面说明问题
var io = require('socket.io');
module.exports.init = function(server) {
io = io.listen(server);
io.of('/chatSystem').on('connection', function(socket) {
/*handling set nickname event*/
socket.on('set.name', function(data) {
/*attach nickname key to this socket*/
socket.nickname = data.name;
socket.broadcast.emit('user.entered', data);
});
});
io.of('/chatUser').on('connection', function(socket) {
/*handling client event socket.send*/
socket.on('message', function(data) {
data = JSON.parse(data);
data.nickname = socket.nickname; // <--- this is undefined
/*send to all connected client(broadcast will not send message to socket that created the message)*/
socket.broadcast.send(JSON.stringify(data));
data.type = 'myMessage';
/*manually send back the message to the socket that created the message*/
socket.send(JSON.stringify(data));
});
});
};
是有办法解决这一问题?
我面临同样的问题。当试图在另一个命名空间中读取时,在一个名称命名空间中设置的名称未定义。 如果所有的消息都只使用一个套接字'io.on('connection',function(){.....})'这个工作正常。但不能使用两个不同的名称空间。 –
我面临同样的问题,并希望对此有一个答案。 –