Node.js 如何在routes和server.js中使用socket.io?

Node.js 如何在routes和server.js中使用socket.io?,node.js,class,express,sockets,socket.io,Node.js,Class,Express,Sockets,Socket.io,我正在使用带有Socket.io的Express,但我不知道如何在Express routes和server.js中同时使用Socket.io 这是我的app.js import http from "http"; import io from "socket.io"; import express from "express"; import path from "path"; import bodyParser from "body-parser"; import cors from "co

我正在使用带有Socket.io的Express,但我不知道如何在Express routes和server.js中同时使用Socket.io

这是我的app.js

import http from "http";
import io from "socket.io";
import express from "express";
import path from "path";
import bodyParser from "body-parser";
import cors from "cors";

import routes from "./routes";


class App {
  constructor() {
    this.server = express();
    this.middlewares();
    this.routes();
    this.serverHttp = http.createServer(this.server);
    this.io = io.listen(this.serverHttp);
  }

  middlewares() {
    this.server.use(express.json());
    this.server.use(
      bodyParser.urlencoded({ extended: false })
    );
    this.server.use(bodyParser.json());
    this.server.use(cors());

    this.io.on("connection", socket => {
      console.log("Connected");
    });

    this.server.use((req, res, next) => {
      req.io = this.io;

      next();
    });
  }

  routes() {
    this.server.use(routes);
  }
}

export default new App().serverHttp;


下面的文件是my server.js


import app from "./app";

const port = process.env.PORT;
const hostname = process.env.HOST;

app.listen(port, "0.0.0.0");
当我在客户端上面尝试时,不要与服务器端通信

我成功地将所有内容放入server.js中,就像下面的代码片段一样。但是我需要请求中的io来使用emit方法

import http from "http";
import io from "socket.io";

import app from "./app";

const port = process.env.PORT;
const hostname = process.env.HOST;

const http2 = http.Server(app);

const socket = io(http2);

socket.on("connection", socket => {
  console.log("Connected");
});

http2.listen(port, "0.0.0.0");


这需要大量的文字和代码,但如果您所要做的只是将socket.io消息发送到express route处理程序中向服务器发出http请求的同一个客户端,那么您可以在此处查看如何进行设置:。如果您的目标是其他的,请澄清。基本上,我需要启动服务器,并通过请求传递socket.io配置。抱歉,仍然不理解您实际要实现的目标。你之前的评论听起来像是某种可能的解决方案,而不是实际的问题。请描述实际问题。我想做X。X是什么?第一段代码是我的问题,在那里我启动socket.io,并将其导出到server.js(第二段代码)。但是客户端不能这样连接,我不知道为什么。第三段代码是显示,在单个文件中存在通信,但我无法通过请求传递套接字。这需要大量的文字和代码,但如果您所要做的只是向在express route处理程序中向服务器发出http请求的同一客户端发送socket.io消息,然后您可以在此处查看如何设置:。如果您的目标是其他的,请澄清。基本上,我需要启动服务器,并通过请求传递socket.io配置。抱歉,仍然不理解您实际要实现的目标。你之前的评论听起来像是某种可能的解决方案,而不是实际的问题。请描述实际问题。我想做X。X是什么?第一段代码是我的问题,在那里我启动socket.io,并将其导出到server.js(第二段代码)。但是客户端不能这样连接,我不知道为什么。第三段代码是显示,在单个文件中存在通信,但我无法通过请求传递套接字。