1

我有一个用户发送 POST 请求的场景,我设置了一个路由,获取发布数据,验证它,将它存储在数据库中,然后我需要将它广播到所有连接的套接字。但是由于套接字变量在内部可用,io.sockets.on('connection')我可以通过这种方式使用闭包访问它的内部范围:

Var a = {}; //global
io.sockets.on('connection',function(socket){
    a.inner = function(data){
        socket.broadcast.emit('boo',data)
    }
}

然后打电话a.inner(data)

这是正常的吗?有没有更好的方法来访问或调用内部函数?

谢谢

4

1 回答 1

2

我总是用这个:

var userIdSocketMapper = {};
io.sockets.on('connection', function (socket) {
  var userId = socket.handshake.userId;
  userIdSocketMapper[userId] = socket;
});

app.post('/:userId', function(req, res) {
   var socket = userIdSocketMapper[req.params.userId];
   if (socket) {
     socket.broadcast.emit('boo', data);
   }
});
于 2013-06-17T06:53:01.830 回答