javascript - Websockets 在 React JS + Electron NodeJS 应用程序中多次连接

标签 javascript node.js reactjs electron

我有一个用 Electron JS 构建的应用程序,它使用 React 和 websockets。
我正在使用以下代码在渲染器线程中调用服务器:

const host = 'http://localhost:3000';

const socket = io(host);
const apiClient = new APIClient(socket);
apiClient.someMethod(...);
此代码不在 React JS 组件中。它在 index.tsx 上,它只被调用一次。如果我在该代码中放置一个 console.log,它只会打印一次。
在服务器中,我有一个类似于此的代码:
    io.on("connection", socket => {
      // getting sesionUserId

      console.log("Client connected. User id: ", sessionUserId);
该代码似乎不起作用,并且在服务器中我得到了这个日志:
Client connected. User id:  5
Client connected. User id:  5
Client connected. User id:  5
Client connected. User id:  5
Client connected. User id:  5
... etc
似乎发生的是 websockets 一直在连接。为什么会这样?我对 Electron 没有太多经验。看起来客户端可以与服务器连接,但由于某种原因它会重试连接。此外,当我尝试与服务器交谈时,我没有得到答案(我猜这是因为它一直在重新连接)。
Electron JS 是否有任何限制,它会阻止 websockets 正常工作?

最佳答案

您是否在客户端和服务器上使用不同版本的 socketIO,请尝试使它们具有相同的主要版本。当我有不同的版本时,这发生在我身上,我在客户端有 2.X.X 版本,在服务器上有 3.X.X 版本。所以我为服务器和客户端制作了 2.X.X 的 socketIO 版本,一切都开始正常工作。
即我在客户端的版本 2.X.X 的客户端使用了“socket-io-client”模块
我在版本 2.X.X 的服务器上使用了“socket-io”模块,并且不再形成多个 websocket 连接。

关于javascript - Websockets 在 React JS + Electron NodeJS 应用程序中多次连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65768203/

相关文章:

javascript - 使用本地子模块构建 webpack 项目

javascript - 具有 ID 的 DOM 树元素是否成为全局属性?

javascript - XMPP onRoster 名称属性未出现

javascript - 当我关闭浏览器时,Cookies 会被删除吗?

javascript - 停止父组件的重新渲染。仅重新渲染子组件

node.js - 重用 mongodb 连接并关闭它

javascript - 如何从 AJV 错误中获取 "title"?

javascript - SameOrigin 策略干扰 Google 文档

javascript - 如何在 node js v6 中将顺序函数转换为并行执行

javascript - 函数原型(prototype) Node 不工作