我一直在使用socket.io构建一个简单的基于Node / Express的聊天客户端,并且在添加依赖项的导入方式与使用闭包将依赖项传递给组件之间有点混淆。
以下是该应用的结构:
创建socketIO客户端需要express.Server的实例。 但是,我仍然需要在快速服务器的控制器中使用socketIO客户端API(发出/广播更新)。 因此,套接字客户端由index.js导出为promise,在解析时,用于设置express的控制器。
问题: 什么是将组件连接起来的好方法
答案 0 :(得分:0)
在Node.js生态系统中,没有首选的方法来构建项目组件,特别是对于不同的业务案例。
我在快速控制器中实现了一个需要socket.io
实例的类似Web应用程序,并且遇到了同样的问题:“我应该如何访问控制器中的socket
对象?”。
我所做的是用套接字事件替换我的快速控制器。所以,你的代码库可以变成这些:
io.on('connection', function(socket){
socket.on('join', function(user) {
userStore.join(user)
emitOnlineCount()
})
function emitOnlineCount() {
io.sockets.emit("onlines", userStore.getUsers().length)
}
})
让您的代码保持简洁明了。