node.js - SocketIO:在单独的服务中访问 io 和 socket 实例
问题描述
我已经在快速服务器中实现了 socket.io。一切正常,但我想避免在我的主文件中有一个长的套接字脚本。因此,我创建了一个单独的服务来处理另一个文件中的套接字逻辑:
主.js:
io.on("connect", SocketManager(io))
socketManager.js:
const SocketManager = (io) => {io.on("connect", ()=> do stuff}
但是这样做时,我只能使用 io 实例。套接字未定义,这很不幸,因为我必须访问它才能完成特定任务。可悲的是,我不能只将套接字作为第二个参数传递给 SocketManager。如何解决这个问题?
解决方案
您的代码忽略了socket
传递给connect
事件的那个,因此您错过了使用实际新创建的套接字的机会。
要修复,请更改此:
io.on("connect", SocketManager(io))
对此:
SocketManager(io)
您要做的就是初始化您的套接字管理器并将io
实例传递给它并让它监听connect
事件本身。
然后,在您的SocketManager
代码中,您要注意socket
传递给connect
事件的参数。所以,改变这个:
const SocketManager = (io) => {io.on("connect", ()=> do stuff}
对此:
const SocketManager = (io) => {
io.on("connect", (socket) => {
// do stuff using newly connected socket in here
});
});
推荐阅读
- java - android.view.InflateException:错误膨胀类
- java - 如何使用 JTextField 和 JButton 制作具有名称填充功能的菜单?
- spring-boot - ReactiveMongoTemplate .save 无法将@compondindex 注释添加到集合类
- inno-setup - 如何在 Inno Setup 的打开对话框中选择多个文件?
- google-data-studio - REGEXP_MATCH 在 Google Data Studio 中无法正常工作
- c - 在传递给函数本身的指针上调用 realloc() 是否安全?
- c - 在动态内存分配中使用指针
- node.js - 如何在 nodejs 中使用异步瀑布进行 API 调用
- c# - 如何去除前后的非字母词
- kotlin - CoroutineExceptionHandler 应该如何处理 OutOfMemoryError 或其他致命错误?