node.js - 客户端建立连接时 Socket.io 服务器没有响应

标签 node.js reactjs sockets websocket socket.io

我一直在努力设置这个,比我想承认的要长。
起初,我有 CORS 问题 ,在遵循我遇到的 socket.io 文档/其他堆栈溢出线程之后, GET/POST 400 错误 .
最后,我注意到有几个线程提到要传入 {transports: ['websocket']}在服务器和客户端。
一旦我这样做了,我就不再收到错误消息,但是,我仍然无法从我的客户端连接到我的 socket.io 服务器。我希望我能得到一些指导。
我正在运行 Socket.io 3.0 并表达 4+
这是我的服务器/客户端目前的样子..
服务器(作为快速路由器)

const express = require('express');
const socketIO = require("socket.io");
const http = require('http');

let app = express();
let router = express.Router();
let server = http.createServer(app);

// The event will be called when a client is connected.
let io = socketIO(server, {transports: ['websocket']})

io.on("connection", socket => {
    console.log("connection")
    socket.emit("hello", { data: "more data" })

    socket.on("disconnect", () => {
        console.log("user left")
    })
})

server.listen(8081, () => console.log('Socket.io listening on *:8081'));

module.exports = router;
客户端( react )
// Socket.IO
import io from 'socket.io-client';
const socket_io = io('localhost:8081', {transports: ['websocket']})

  // Socket.io UseEffect
  useEffect( () => {
    const initSocket = () => {
      console.log(socket_io)
      socket_io.on("hello", data => {
        setSocket(data);
        console.log(data);
      });
          // CLEAN UP THE EFFECT
      return () => socket_io.disconnect();
    }
      initSocket()
  },[])
这是我注销套接字连接时我的控制台当前的样子:
enter image description here

最佳答案

因此,尽管如此令人尴尬,重大变化是 React 客户端应用程序中的 socket.io-client 模块不像服务器上的那样是 3.0。因此他们无法握手。
我的建议是,如果您添加了 CORS 规则或添加了 transport: websocket,请确保查看服务器/客户端应用程序中的 package.json 文件,以确保 socket.io 包版本匹配。

关于node.js - 客户端建立连接时 Socket.io 服务器没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64990200/

相关文章:

visual-studio-2010 - 在 Windows x64 上安装 node-canvas 平台 x64 无效?

javascript - react ,未定义这个

javascript - react : How to bind and render multiple values

javascript - Socket.io : "Cannot read property ' emit' of undefined"

node.js - 如何以编程方式将aws凭证和配置传递给nodejs中的aws sdk?

ruby-on-rails - Faye 通过 HTTPS 使用 Nodejs

reactjs - 使用 @reduxjs/toolkit 中的 configureStore 时如何重置 Redux Store 的状态?

javascript - styled-components 'css' 未定义 no-undef

树莓派中通过 wifi 的 Python 套接字

sockets - htons 和 htonl 之间的区别