我即将开始一款HTML5游戏,在java脚本中有大量的逻辑,我想在服务器端保留一些逻辑,这样我就可以保证我的游戏只在我的服务器上运行。
我决定选择node.js,因为它非常快,我考虑了两种方法:
-
要使用AJAX,客户端将调用服务器端方法,该方法将返回计算的数字来刷新游戏场景,该调用将每2秒调用一次。
-
使用node.js打开一个套接字,这样客户端不必每次都调用服务器,相反,它一直侦听从打开的套接字流的数据,这将每x秒刷新数据。
计算的数据并不大,大约0.5 kb/秒,客户端还需要告诉服务器什么是状态,所以从客户端发送的数据大约0.1 kb/x秒,这取决于游戏的玩法。
似乎第二种方法更好,但是,我将需要数百个端口来处理并发玩家。
因此,就性能而言&最小化使用的带宽,选择哪一种方式?或者,还有更好的方法吗?有人能帮忙吗?
正如您提到的,您正在创建一个基于web的JavaScript应用程序,该应用程序定期向服务器发送信息或从服务器检索更新,然后在我看来,您应该使用WebSocket(特别是您正在开发HTML5),这减少了应用程序使用的带宽量。
在性能方面,我也会选择WebSocket,通过做一些测量实验,例如一次平均100个请求的往返时间,WebSocket的往返时间更低。下面是一个性能测试的链接,可以告诉结果:http://www.peterbe.com/plog/are-websockets-faster-than-ajax