获取套接字.来自外部作用域的IO作用域
Accessing socket.io scope from outer scope
我有一个用户发送POST请求的场景,在express中我设置了一个路由,获得POST数据,验证它,将其存储在db中,然后我需要将其广播到所有连接的套接字。但是,由于套接字变量在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);
}
});
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 将作用域存储在JSON中
- 从控制器继承了隔离的作用域以生成可重用的指令
- 从ng模板访问作用域
- 调用私有作用域
- 对父作用域的指令更新延迟了一步
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 在具有命名作用域的自定义Polymer元素中隐藏表行
- AngularJS指令隔离作用域
- Angularjs:修改js中的作用域,稍后在页面中使用
- 访问多个指令的隔离作用域
- Javascript作用域和Ajax调用;工作不正常
- 'simple'套接字中的作用域问题.IO服务器
- Socket.IO-中间件和作用域:我应该如何从外部中间件访问全局IO对象
- 返回socket.io对象在client.js的作用域之外不可用
- 获取套接字.来自外部作用域的IO作用域
- 变量作用域(模块).导出+套接字.io设置)
- 触发器.io:打造.prefs函数中的变量作用域