Socket.io 未在客户端找到

Socket.io is not found in the client-side

这是我的服务器端:

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 附加到其中一个,但只启动另一个。

这两行代码都创建了一个新的网络服务器:

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

但是,只有第二个真正开始,而不是您绑定 socket.io 的那个。因此,您绑定 socket.io 的服务器从未启动,因此应该与您的 socket.io 服务器通信的 client-side 内容中的 none 将正常工作。


要修复它,请将您的服务器代码更改为:

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 绑定到该服务器。