繁体   English   中英

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

[英]No response from Socket.io server when client is making a connection

我一直在努力设置这个比我想承认的时间更长。

起初,我遇到了CORS 问题,在遵循我遇到的 socket.io 文档/其他堆栈溢出线程之后, GET / POST 400 错误

最后,我注意到有几个线程提到在服务器和客户端上传递{transports: ['websocket']}

一旦我这样做了,我就不再收到错误消息,但是,我仍然无法建立从我的客户端到我的 socket.io 服务器的连接。 我希望我能得到一些指导。

我正在运行 Socket.io 3.0 和 express 4+

这是我的服务器/客户端目前的样子..

SERVER(作为快速路由器)

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;

客户端(反应)

// 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()
  },[])

这是当我注销套接字连接时我的控制台当前的样子: 在此处输入图片说明

因此,尽管令人尴尬,但重大变化是 React 客户端应用程序中的 socket.io-client 模块不像服务器上的模块那样是 3.0。 因此,他们无法握手。

我的建议是,如果您添加了 CORS 规则或添加了传输:websocket,请确保您在服务器/客户端应用程序中查看 package.json 文件以确保 socket.io 包版本匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM