如果这是在开发过程中发生的。那么原因之一可能是您正在运行客户端文件(index.html)。但是您应该做的是运行您的服务器(例如在 localhost:3000)并让服务器处理该静态文件(index.html)。这样,socket.io 包将自动
<script src="/socket.io/socket.io.js"></script>
在客户端可用。
插图(文件名:index.js):
const path = require('path');
const express = require('express');
const socketio = require('socket.io');
const port = 3001 || process.env.PORT;
const app = express();
const server = http.createServer(app);
const io = socketio(server);
//MiddleWares
app.use(express.json());
app.use(
express.urlencoded({
extended: false,
})
);
app.use(express.static(__dirname + '/public'));
app.get('/', (req, res) => {
res.sendFile('index.html');
});
io.on('connect', (socket) => {
console.log('New user joined');
}
server.listen(port, () => {
console.log(`App has been started at port ${port}`);
});
在此之后通过命令运行您的服务器文件
node index.js
然后打开localhost:${port}
,将端口替换为 index.js 文件中给定的端口并运行它。
它解决了我的问题。希望它也能解决你的问题。