SocketIO volatile发送到命名空间

时间:2014-08-12 13:41:44

标签: javascript node.js websocket socket.io

以下错误导致错误TypeError: Cannot read property 'volatile' of undefined(即map没有使用volatile发射方法):

io = require("socket.io").listen(server)
map = io.of "/map"

temp = []

recieveDataFromSomewhere = (hit) ->
  temp.push hit

setInterval ->
    map.volatile.emit 'data', temp
    temp = []
, 1000

我需要使用易失性消息,因为SocketIO跟踪收据的开销会导致延迟随着时间的推移而出现问题。

1 个答案:

答案 0 :(得分:4)

不确定是否可以向命名空间发出易失性消息。尝试发送到命名空间上连接的套接字。

var io = require("socket.io").listen(server);

var map = io.of("/map");

map.on("connection", function(socket) {
    socket.volatile.emit('data');
});

如果您想发送给所有连接的客户端,您可以执行以下操作:

Object.keys(io.nsps['/map'].connected).forEach(function(socketID) {
    io.nsps['/map'].connected[socketID].volatile.emit('data')
});