Socket.IO服务器端多个文件

编程入门 行业动态 更新时间:2024-10-06 12:27:44

Socket.IO服务器端<a href=https://www.elefans.com/category/jswz/34/1771377.html style=多个文件"/>

Socket.IO服务器端多个文件

我有一个nodejs后端和一个React前端。在nodejs上,我设置了socketio,在客户端上,我在App组件中具有连接,并使用上下文向下传递。现在,使用钩子,我可以全局使用io变量,并在客户端侦听事件。

但是,在服务器端,我也可以全局使用此IO变量,但是如何在多个页面上使用它呢?我在server.ts中有此代码:

const io = //initialize io
io.on('connection', (socket: any) => {
    console.log('a user connected', socket.handshake.query);

    socket.on('disconnect', () => {
        console.log('user disconnected');
    });

    io.on('test', console.log);
});

但是,在另一个文件中,我必须再次使用io.on()初始化我的连接。如何解决这个问题?我有一个名为foo.controller.ts的文件,它在foo周围有一些动作。在此文件中,我想监听与foo相关的所有事件。

回答如下:

创建新文件,例如socket.instance.js,然后创建类来处理所有套接字的逻辑,例如存储套接字列表或其他内容(取决于您的需要);

这里是socket.instance.js的示例:

class SocketInstance {
  io = require('socket.io')();
  sockets = new Set();

  constructor() {
    this.io.listen(process.env.PORT);

    this.io.on('connect', socket => {
      this.sockets.add(socket);

      this.handleNewSocket(socket);

      socket.on('disconnect', () => {
        this.sockets.delete(socket);
      })
    });
  }

  handleNewSocket(socket) {
    // logic here
  }
}

const socketInstance = new SocketInstance();

module.exports = {socketInstance}

然后在任何其他文件中,您都可以像这样访问此实例:

// anotherServerFile.js
const socketInstance = require('./socket.instance').socketInstance;

socketInstance.io.emit('hello');

这只是基本示例,说明如何在代码中的任何其他类/文件之间共享套接字服务器实例。一切都取决于您的需求

与前端情况有些相似

更多推荐

Socket.IO服务器端多个文件

本文发布于:2024-05-07 05:50:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754607.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多个   服务器端   文件   Socket   IO

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!