簡體   English   中英

NodeJS和ReactJS套接字通信

[英]NodeJS and ReactJS socket communication

我有一個漂亮的全棧應用,服務器端有NodeJS,客戶端有ReactJS。 該應用程序依賴於Server.Client API和Socket.IO軟件包。

在我的計算機上,對於node的localhost 4000和對react的localhost 3000一切正常。 在每個套接字事件上的完美通信。 但是將來,我的設置將有所不同。

我想將服務器端代碼托管在一個稱為SERVER_A的服務器上,並將客戶端代碼托管在另一個稱為SERVER_B的服務器上,充當用戶的網關。 我期望的是客戶端將在他的個人計算機上打開http://SERVER_B:80/myapp ,我的react應用將打開,並且所有套接字通信都將在SERVER_B和SERVER_A之間在內部完成,而客戶端將釋放數據通過節點應用程序。 但是實際發生的是,他的個人計算機上的用戶需要同時訪問SERVER_B的端口80和SERVER_A的端口4000,才能使整個應用正常運行。

這真是令人討厭,因為這類交流應該在幕后進行。 有什么方法可以限制Node和React之間的套接字偵聽和發出事件,並使客戶端僅保留渲染的數據?

希望這很清楚,對不起....)

提前致謝!

VirtualHost將響應的默認端口是在“幕后”配置的(對非惡意使用者而言,它是看不見的)。 因此,您的客戶端將看到https:// SERVER_B /https:// SERVER_A,但是DEFAULT端口將有所不同。

我認為您想使SERVER_A對用戶不可見,而是在后台為數據提供SERVER_B。 如果是這樣,我認為您必須在SERVER_B中設置一個虛擬主機(使用代理之類的東西)以在SERVER_B和SERVER_A之間進行通信。因此,只要您的客戶端向SERVER_B發出請求(用於與節點應用程序關聯的連接),SERVER_B就會進行套接字連接到SERVER_A,然后通信繼續。

如果我不得不說我不建議這樣做,因為這種設置會降低性能。背后的原因是,SERVER_B必須先讀取客戶端流,然后將流寫入SERVER_A。當SERVER_A發送一些流時,再次寫回客戶端。

暫無
暫無

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

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