【问题标题】:GET /socket.io/?EIO=3&transport=polling&t=NZFvwqb 404 149GET /socket.io/?EIO=3&transport=polling&t=NZFvwqb 404 149
【发布时间】:2021-07-09 09:57:37
【问题描述】:

当我尝试实施socket.io 来统计活跃用户时,我遇到了上述异常,我尝试了所有解决方案,但没有任何效果。

服务器:

const express = require("express");
const app = express();
const cors = require("cors");
const socketIo = require('socket.io');
const http = require('http');

//Enable CORS policy
app.use(cors());
app.options("*", cors());

//socket io
const server = http.createServer(app);
const io = socketIo(server, {
    cors: {
        origins: ["http://localhost:4200", "http://localhost:3000"],
        methods: ["GET", "POST"],
        credentials: false
    }
});


var count = 0;
io.on('connection', (socket) => {    
  console.log("Client connected");    
    if (socket.handshake.headers.origin === "http://localhost:3000") {
        count++;        
        socket.broadcast.emit('count', count);               
        
        socket.on('disconnect', () => {
            count--;                   
            socket.broadcast.emit('count', count);            
        });
    }   
}); 

//Server
app.listen(8080, () => {
  console.log("Server is running on port 8080");
});

【问题讨论】:

    标签: node.js reactjs express socket.io


    【解决方案1】:

    改变这个:

    app.listen(8080, () => {
      console.log("Server is running on port 8080");
    });
    

    到这里:

    server.listen(8080, () => {
      console.log("Server is running on port 8080");
    });
    

    您遇到此问题是因为您在初始化 socket 时传递的实例与您正在侦听的实例不同。

    更多请参考: Should I create a route specific for SocketIO?

    【讨论】:

      猜你喜欢
      • 2019-12-15
      • 2017-02-25
      • 2017-09-04
      • 2020-11-24
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 2017-12-25
      • 2015-11-01
      相关资源
      最近更新 更多