[英]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.