簡體   English   中英

如何從單個NodeJS應用程序運行HTTP服務器,UDP服務器和WebSocket服務器?

[英]How to run HTTP server, UDP Server and WebSocket Server from a single NodeJS app?

由於NodeJS是單線程運行時平台,因此如何從單個NodeJS應用程序內並行運行以下服務器:

  1. NodeJS的http服務器:服務HTML5應用
  2. WebSocket服務器:使用在http服務器上打開的相同http連接來提供與HTML5應用程序的WebSocket連接。
  3. UDP服務器:為同一機器或其他機器/ docker容器上的其他獨立運行的NodeJS應用公開服務發現端點。

我當時正在考慮通過使用RxJS實現上述目標,但是我想聽聽社區中有關他們的解決方案/經驗的信息。

Node.js不是單線程的。 開發人員只能訪問線程。 但實際上,node.js是多線程的。

專門針對您的問題,您可以在同一過程中啟動多個服務器。 Socket.io入門示例顯示了使用http服務器運行websockets。 UDP也可以完成相同的操作。

希望能有所幫助。

首先,您可以在node.js進程中擁有任意數量的偵聽服務器。 只要您在處理程序中編寫適當的異步代碼並且沒有運行任何占用CPU的算法,就可以了。

其次,您的webSocket和http服務器可以是與webSocket設計工作方式完全相同的服務器進程。

然后,您的UDP偵聽器只需位於與Web服務器不同的端口即可。

node.js的單線程方面僅適用於Javascript。 您可以運行多個服務器監聽器。 如果在不同的服務器上同時出現兩個請求,則在另一個請求稍早到達的一個請求將調用其處理程序,而一個稍晚到達的請求將排隊,直到第一個處理程序完成或在等待時返回異步操作本身。 這樣,單線程的node.js可以處理許多請求。

暫無
暫無

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

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