繁体   English   中英

Node.js架构和应用程序结构

[英]Node.js architecture and app structure

我一直在用socket.io构建一个简单的基于Node / Express的聊天客户端,在添加依赖项的导入方式与使用闭包将依赖项传递给组件之间有些困惑。

该应用的结构如下:

  • index.js
  • server / server.js(创建快速实例)
  • 服务器/控制器/(包含需要socketIO客户端的控制器)
  • server / store.js(创建redis实例)
  • server / websocket.js(创建socket.io实例/返回自定义API)

创建一个socketIO客户端需要一个express.Server实例。 但是,我仍然需要Express Server的控制器中的socketIO客户端API(发出/广播更新)。 因此,套接字客户端由index.js导出为承诺,该承诺在解析后将用于设置用于express的控制器。

问题:在哪里连接组件的好方法是什么?

  • 组件A需要组件B的一个实例。
  • 组件B中的方法将需要组件A的一个实例。(这里SocketIO需要一个Express的实例,但是我还需要Express所使用的控制器中的SocketIO客户端)

实际代码: https//github.com/vsr4493/chatbox

在Node.js生态系统中,没有构造项目组件的首选方法,尤其是对于不同的业务案例。

我已经实现了一个类似的Web应用程序,该应用程序在快速控制器中需要socket.io实例,并且有一个相同的问题:“我应该如何在控制器中访问socket对象?”。

我所做的就是用套接字事件替换了Express控制器。 因此,您的代码库可以变成以下内容:

io.on('connection', function(socket){

    socket.on('join', function(user) {
        userStore.join(user)
        emitOnlineCount()
    })

    function emitOnlineCount() {
        io.sockets.emit("onlines", userStore.getUsers().length)
    }

})

您可以随时保持代码的清洁和简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM