【问题标题】:Socket.io is not found in the client-side在客户端找不到 Socket.io
【发布时间】:2020-08-23 07:12:34
【问题描述】:

这是我的服务器端:

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>

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

【问题讨论】:

    标签: javascript node.js express socket.io node-modules


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 2015-06-18
      • 2017-11-10
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      相关资源
      最近更新 更多