gpt4 book ai didi

javascript - 从外部作用域访问 socket.io 作用域

转载 作者:行者123 更新时间:2023-11-30 18:00:27 25 4
gpt4 key购买 nike

我有一个用户发送 POST 请求的场景,在 express 中我设置了一个路由,获取 post 数据,验证它,将它存储在 db 中,然后我需要将它广播到所有连接的套接字。但是由于 socket 变量在 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)

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

谢谢

最佳答案

我一直用这个:

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);
}
});

关于javascript - 从外部作用域访问 socket.io 作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17141481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com