Как использовать socket.io в маршрутах и ​​на сервере. js? - PullRequest
1 голос
/ 07 апреля 2020

Я использую Express с Socket.io, но не могу понять, как использовать SocKet.io на Express маршрутах и ​​сервере. js одновременно.

Это мое приложение. 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;


И файл ниже - мой сервер. js


import app from "./app";

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

app.listen(port, "0.0.0.0");

Когда я пытаюсь это сделать способом выше клиентской стороны не общайтесь с серверной стороной.

Мне удалось заставить его работать, поместив все на сервер. 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");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...