使用TCP協議的客戶端和服務器同意在一個端口上,然後可以維持connection.Server知道客戶端的IP地址,從而可以發送回messages.If我們用那麼的NodeJS多個客戶端可以連接到相同的NodeJS服務器在同一端口上。這怎麼可能?同一臺服務器如何在同一端口上建立多個連接。
沒有限制,其可以在一個端口上可以保持(儘管在實踐中,有可能是操作系統或硬件限制)連接的數量。當然,只有一個進程可以監聽端口,但這與連接無關。這不是特定於節點的,所有的TCP服務器都是這樣工作的。
如果客戶端在NAT後面,那麼它的IP可以是動態的,那麼nodejs服務器如何發送數據給客戶端。
你實質上是在問NAT如何工作。同樣,在這種情況下,沒有任何特定節點。 NAT服務器根據需要簡單地更改數據包標頭,並維護用於路由的轉換表,就像使用任何連接一樣。
會有什麼在維持服務器和客戶端
開銷持久連接的資源利用率是真的只是連接本身相當小。一點點的記憶,但在大局中幾乎沒有意義。如果您要爲每個連接存儲更多關聯數據,則可能會有所不同。 Node.js很好地處理了大量的併發連接,但是如果你擔心的話,你總是可以搜索基準測試,或者編寫自己的測試。
nodejs服務器崩潰時發生了什麼?客戶端如何再次發起連接?
插座同時發出close和error事件。只是傾聽他們的意見,然後嘗試重新連接,可能會造成延遲。
如果在客戶端的網絡問題,它結束並開始每5分鐘後連接..then有沒有辦法這種情況下可以辦理?
不完全知道你是問這裏。客戶只需按照上一個問題/答案中的說明重新連接即可。如果你的某些數據與客戶關聯插座,以及你想有一個寬限期,其中客戶端有一個機會,數據之前重新連接被釋放,那麼你就需要設置一個超時一定量後,將釋放這些資源的時間。然後,在連接偵聽器中,或者在一個身份驗證事件中,您需要分析新連接以查看它是否與最近斷開連接的客戶端相匹配。
我一定會推薦看socket.io,尤其是如果你的用例是基於網絡的,儘管它不僅僅用於瀏覽器/服務器連接。它會或多或少地自動執行許多您似乎關心的事情(重新連接,資源關聯,斷開寬限期等)。