套接字.IO中间件函数
Socket.io middlewhere functions
我正在尝试在套接字中分离逻辑。IO服务器,但我遇到了一些问题。
说,例如我有以下内容:
io.on('connection', function (socket) {
var fileModule = require('./costum_modules/FileModule.js')(io);
app.use(fileModule);
});
现在在fileModule
中,我有以下代码:
var fileModule = function (socket) {
socket.on('userData', function(msg){
var i = 0;
});
}
module.exports = new fileModule();
很遗憾socket没有定义。
我的问题是我可以这样做吗?或者不可能将单例传递给另一个文件并使其从同一对象读取?
您可以使用其他文件来分解您的逻辑,但是您的代码存在几个问题。
首先,我认为hackto是正确的,你不想做new fileModule()
,只是:
module.exports = fileModule;
第二,当调用require时,您正在传递全局socketIO对象(io
)。您应该将在连接处理程序中获得的socket
传递给它。例如
require('./costum_modules/FileModule.js')(socket);
我认为这将工作,移动一些你的窝。IO消息处理代码变成一个模块。现在您的套接字将响应来自客户端的userData
消息。然而,除非你有一些自定义的应用程序,我不认为app.use
会做你所期望的。你不能把web套接字处理程序钩到Express/retify/Connect/任何中间件链中。但是你可以编写一个中间件,向套接字服务器发送消息。
如果你只是想在你的应用程序和套接字服务器之间共享会话,试试这个SO答案。
相关文章:
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 什么'在Express中路由时,应用程序级中间件和路由器级中间件之间的区别是什么
- Redux中间件在next()之前更改状态
- 快速的套接字 io 实例/中间件
- 如何使用Express'正确加载图像;s的静态中间件
- Router.use()需要中间件函数,但得到了一个未定义的函数
- 谁在Express中间件中提供next()函数
- Express JS - 对路由和中间件使用匿名函数
- 在redux中使用thunk中间件比使用常规函数作为异步操作创建者有什么好处
- 如何从express中间件函数传递值
- TypeError:app.use()需要中间件函数
- 为什么这段代码作为中间件而不是作为函数工作得很好?
- App.use()需要中间件函数
- 如何在中间件函数中迭代Mongoose模型属性
- 编写koa异步函数中间件时出错
- 在express js的中间件函数中获取会话变量
- TypeError:当向Redux添加中间件时,getState不是一个函数
- react redux中动作函数的目的是什么?它们是否都返回一个动作或函数,然后转到存储/中间件
- 获取一个函数,在继续之前等待post中间件保存完成
- 套接字.IO中间件函数