Socket.io 服务器上"connection"未触发,客户端事件未触发也是如此



我试图使用套接字io构建一个快速后端,但无论出于何种原因,我只是没有得到连接事件被触发。我在服务器和客户端上使用3.1.2版本,所以这不是问题。一旦启动客户端应用程序,我就会在express服务器中获得一些日志,如下所示:

::ffff:127.0.0.1 - - [24/Oct/2021:11:14:10 +0000] "GET/socket.io/?EIO=4&transport=polling&t= no0wgb&b64=1 HTTP/1.1"404 149 "-"node-XMLHttpRequest">

但是on connection事件没有在任何一方触发。

const dotenv = require("dotenv").config();
const express = require("express");
const app = express();
const server = require("http").createServer(app);
const morgan = require("morgan");
const cors = require("cors");
const config = require("./src/config/general");
const io = require("socket.io")(server);
const SECURITY_KEY = process.env.SECURITYKEY;
//database
const connect = require("./src/config/database/connect");

app.set("json spaces", 2);
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cors());
app.use(morgan("combined"));
//controllers
const ExchangeController = require("./src/api/exchange/exchange.controller");
const exchangeController = new ExchangeController(io);  //initially wanted to socket logic in that file, but even in the server.js its not working either
const LogController = require("./src/api/log/log.controller");
const logController = new LogController();
const StrategyController = require("./src/api/strategy/strategy.controller");
const strategyController = new StrategyController();
app.set("json spaces", 2);
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cors());
app.use(morgan("combined"));
app.use("/api/exchange", exchangeController.router);
app.use("/api/log", logController.router);
app.use("/api/strategy", strategyController.router);
io.on("connection", (socket) => {
console.log("incoming socket connection");
socket.on("buy", async (data) => {
try {
let payload = JSON.parse(data);
let symbols = payload.symbol.split(",");
let strategy;
if (payload.hasOwnProperty("strat")) {
strategy = payload.strat;
}
if (payload.security == SECURITY_KEY) {
for (let i = 0; i < symbols.length; i++) {
exchangeManager.performStrategy(strategy, symbols[i]);
}
}
} catch (error) {
console.log("io.on", error.message);
}
});
});

app.listen(config.PORT, async () => {
await connect();
console.log(`server started on port ${config.PORT}`);
});

客户端测试代码

//client.js
const io = require('socket.io-client');
const socket = io("ws://localhost:3000")
// Add a connect listener
socket.on('connect', function (socket) {
console.log('Connected!');

});
socket.on('error', function (socket) {
console.log('error!');

});

这件事我彻底搞糊涂了,什么都试过了,都没有成功。

通过切换应用程序侦听服务器来解决错误。听着,我的错。