2013-10-22 133 views
0

我需要在我的多人遊戲中將服務器發送一些數據給另一個玩家進入遊戲的客戶端。爲此,我一直在想,我需要:延遲ajax響應vs套接字? node.js

  1. 套接字
  2. 阿賈克斯每X秒

但現在我正在考慮推遲Ajax請求。想象一下,客戶要求服務器「玩家進入遊戲?」並且服務器現在不回覆,但它會等待該玩家進入,然後它會響應第一個客戶端「是的,玩家2進入遊戲」。

現在服務器上的資源如何,服務器資源中哪種方法更輕?

  1. 套接字
  2. 延遲AJAX

我認爲,延遲AJAX是保持連接打開,所以它不是那麼大了,但是告訴我這件事。

感謝

回答

0
  1. 有一個彗星技術,它是你需要的 長輪詢的實現「延遲AJAX」。
  2. 另一個選擇是WebSockets,但它是一個非常新的功能,而不是在許多瀏覽器中支持的 。
  3. 只要他們不需要大量的流量(帶有恆定的ajax輪詢), 並且可以處理「真正的全雙工」,普通套接字是最簡單的方法。如果延遲是優先考慮的話,最好的選擇。
  4. 如果遊戲很大,最好的方法是使用非阻塞IO +反應堆模式, 這將允許您在服務器上同時服務數百萬個請求。並以套接字的方式。不像3,更少的內存消耗。
+0

該遊戲是基於回合,非常簡單。基於canvas,html5,所以需要一個體面的瀏覽器(然後websockets可能會很好,對吧?)。我需要它運行的服務器是免費的亞馬遜EC2層。你認爲它可以處理多少個websocket? –

+0

我想它取決於內存和處理器(和端口數=))。 Sry,不能計算你的亞馬遜計劃的確切數字 - 但你可以通過找出一個線程和它的本地對象佔用多少空間並乘以預期的客戶端數量來計算它。 + websockets也可以以非阻塞的方式實現(在所有websocket都是由瀏覽器啓動的相同「簡單套接字」之後)。如果它們是非阻塞的,它們的數量可能會呈指數增長。 –

+0

從我所知道的node.js只有一個線程...並且非阻塞 –