2013-10-22 114 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只有一个线程...并且非阻塞 –