Node.js 如何在Express.js中分割多个文件之间的套接字io连接?

Node.js 如何在Express.js中分割多个文件之间的套接字io连接?,node.js,express,vue.js,socket.io,routes,Node.js,Express,Vue.js,Socket.io,Routes,我有一个带有socket.io的Express.js应用程序 我有一个主文件(server.js)和路由文件夹用于路由 我想在我的应用程序中的不同路由之间拆分socket.io路径连接 例如: 如果前端应用程序(在我的例子中是Vue.js)连接到pathhttp://localhost:11050/overwatch socket.io应侦听并发出路由“/overwatch”上的消息 如果前端应用程序连接到http://localhost:11050/starcraft socket.io应该监

我有一个带有socket.io的Express.js应用程序 我有一个主文件(server.js)和路由文件夹用于路由

我想在我的应用程序中的不同路由之间拆分socket.io路径连接

例如:

如果前端应用程序(在我的例子中是Vue.js)连接到pathhttp://localhost:11050/overwatch socket.io应侦听并发出路由“/overwatch”上的消息

如果前端应用程序连接到http://localhost:11050/starcraft socket.io应该监听并发出路由“/星际争霸”上的事件

如何在express app中拆分多个路由之间的socket.io连接?

我现在所拥有的:

在我的前端应用程序(Vue js)中只有一条路线有效

如果我在Vue js的开始处点击第一个路由,第二个路由不起作用,如果我先加载第二个路由,第一个路由不起作用。似乎只有一条路径适用于socket.io

Express应用程序:

overwatch.js文件:

module.exports = function (io) {
const overwatch = io.of("/overwatch");

overwatch.on("connection", (socket) => {
console.log("overwatch is connected");
    socket.on("disconnect", () => {
      clearInterval(usersInterval);    
    });

    socket.on("disconnect", () => {
      console.log("overwatch was disconnected");
    });

    socket.on("changeUsersNumber", (data) => {
      maxNumber = data;
    });

    /*generate users number*/
    const usersInterval = setInterval(() => {
      socket.emit(
        "newNumber",
        randomUsers.generateRandomUsers(5000, maxNumber)
      );
    }, 2000);
 }
}
starcraft.js文件:

server.js文件:

如何在Vue JS中使用socket.io:

module.exports = function (io) {
  const starcraft = io.of("/starcraft");

  /*listen to events*/
  starcraft.on("connection", (socket) => {
    console.log(`Starcraft ${socket.id} is connected`);

    socket.on("disconnect", () => {
      console.log(`Starcraft ${socket.id} was disconnected`);
      clearInterval(usersInterval);
    });

    /*generate users number*/
    const usersInterval = setInterval(() => {
      socket.emit(
        "generateUsers",
        randomUsers.generateRandomUsers(5000, maxNumber)
      );
    }, 2300);
  });
};
const express = require("express");
const app = express();
server = app.listen(11050, function () {
  console.log("server is running on port 11050");
});

const io = require("socket.io")(server);

require("./routes/overwatch")(io);
require("./routes/starcraft")(io);
import VueSocketIOExt from "vue-socket.io-extended";
import Vue from "vue";
import io from "socket.io-client";

const socket = io("http://localhost:11050/starcraft");
Vue.use(VueSocketIOExt, socket);

created() {
    this.$socket.client.on("generateUsers", (user) => {
      console.log(user);
      this.addUser(user);
    });

   
  },
  beforeDestroy() {    
    this.$socket.client.off("generateUsers");
  },