Я использую 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");