服务器端多个模块中socket.io的事件和监听器

时间:2019-04-15 22:11:38

标签: socket.io

使用socket.io,在服务器端有connect事件的回调。

io = require("socket.io")(httpserver)
io.on("connect", (socket) => {
//all socket related code in here
}):

在我的用于聊天应用程序的nodejs后端服务器(socket.io 2.2.0和Nodejs 10.x)中,ioindex.js中实例化:

io.on('connection', (socket) => {

  app.set("socket", socket);
  socket.on('private message', (msg) => {
    console.log("client socket id : ", socket.id);
    console.log("msg received by server socket : ", msg);
  });
  console.log("Socketio server is initialized");
  //other things as needed

  //disconnect
  socket.on('disconnect', async function() {
      try {
       //do something
       } catch(err) {
          console.log("err in false socket id", socket.id);
      }
      console.log('disconnected event');
  });
});

由于在路由模块中发生了其他侦听和发出事件,因此socket变量将被传递并能够根据需要在以下模块中进行检索。例如,在检索消息之后,服务器路由模块会加入聊天室并将消息发送回连接的客户端:

socket.join(req.query.event_id);
socket.emit("private message", `joined room ${req.query.event_id}`);

我想到的一个潜在问题是,在模块中调用socket时可能是undefined or null,这可能会使服务器应用程序崩溃。我还需要担心和避免其他潜在问题吗?还有其他更好的方法来处理与socket.io相关的代码吗?

0 个答案:

没有答案