在客户端找不到Socket.io 这是我的服务器端:这是我的客户端:

问题描述

这是我的服务器端:

const path = require('path');
const http = require('http');
const express = require('express');

const socketio = require('socket.io');

const app = express();
 
const server = http.createServer(app);
const io = socketio(server);
const port = 3000 || process.env.PORT;

app.listen(port,() => {
console.log(`server running on port ${port}`);
});

io.on('connection',socket => {
console.log(socket);
});

这是我的客户端:

   <script src="/socket.io/socket.io.js"></script>
   <script>
   const socket = io();
   </script>
   </body>

   </html>

我正确地重新安装了所有模块,但这没有帮助。

解决方法

问题是您要创建两个Web服务器,将socket.io附加到其中一个,但是只能启动另一个。

以下两行代码都创建了一个新的Web服务器:

const server = http.createServer(app);
app.listen(port,...);

但是,实际上只有第二个开始了,而这并不是您将socket.io绑定到的那个。因此,将socket.io绑定到的服务器永远不会启动,因此,应该与socket.io服务器进行通信的客户端程序都无法正常工作。


要解决此问题,请将您的服务器代码更改为此:

const path = require('path');
const express = require('express');
const socketio = require('socket.io');

const app = express();
const port = 3000 || process.env.PORT;
const server = app.listen(port,() => {
    console.log(`server running on port ${port}`);
});

const io = socketio(server);

io.on('connection',socket => {
    console.log(socket);
});

现在,您将只创建一台Web服务器,启动该服务器并将socket.io绑定到该服务器。