javascript - 如何在 io.sockets.on 回调中访问 io 对象?
问题描述
我不想改变我的套接字方法。我希望能够从连接的功能访问io 。
这可能吗?
function sockets (server) {
const io = require('socket.io')(server);
io.sockets.on('connection', connected);
}
const connected = (socket) => {
socket.on('emit_to_all', data => {
emitToAll(socket, data);
// above could be achieved with
// io.emit('emit_to_all', data);
});
};
我在这里查看了 github ,但所有初步示例都没有使用命名回调。
我在这里找到了基本文档。
最后,在基本文档中,API在这里。
解决方案
好吧,您必须将对象作为参数传入,或者将其绑定到上下文。如果你发现闭包语法令人困惑,你也可以只使用 bind。
如果你这样做:
io.sockets.on('connection', connected.bind(io));
然后你连接的函数this
将是 to 对象。或者,如果您更新参数,您可以以类似的方式将其作为参数传递。
io.sockets.on('connection', connected.bind(null, io));
const connected = (io, socket) => {
// Etc
推荐阅读
- node.js - 如何分页。键入需要信用卡信息的表单
- c# - “要调试的程序集是使用与当前系统不兼容的平台构建的。”
- javascript - 未捕获的引用错误:未定义 fetchIssues
- python - 填充基于另一列的唯一 ID 的缺失值
- python - Python 二维码阅读器。专听键盘输入()
- javascript - 如何过滤掉我使用get函数找到的所有会话
- web-scraping - 是否可以通过 API 以编程方式创建 Scrapy Spider?
- swiftui - 将 contextMenu 添加到列表中的按钮会阻止默认按钮功能
- javascript - 从引导日期选择器使用日期时,将日期用作本地,而不是 UTC
- oauth-2.0 - [Web API]AspNet.Security.OAuth.BattleNet OAuth 2.0 问题