簡體   English   中英

Websockets 在 React JS + Electron NodeJS 應用程序中多次連接

[英]Websockets connecting multiple times in React JS + Electron NodeJS application

我有一個內置於 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.XX 版本,在服務器上有 3.XX 版本。 所以我將服務器和客戶端的socketIO版本都設置為2.XX,一切都開始正常工作。
即,我在客戶端的版本 2.XX 的客戶端上使用了“socket-io-client”模塊,在版本 2.XX 的服務器上使用了“socket-io”模塊,並且不再形成多個 websocket 連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM