用于低延迟网页游戏的HTTP或Websocket?

Pet*_*ang 4 javascript tcp http websocket

我是网络开发的新手,我只是想知道一些性能比较.

我正在网上建立一个俄罗斯方块战斗游戏.大多数游戏逻辑都在服务器内部,该服务器是用C++构建的.对于客户,我打算使用cocos2d-js,这基本上是javascript.

玩家的行为会影响对手.首先,用户的输入需要正确到达服务器,服务器将输入应用于逻辑,并将新的游戏状态发送回客户端.客户端只需要在屏幕上表示精灵.

我最初的计划是使用TCP套接字实现它,因为它可能需要低延迟.但是,我刚刚意识到我们不在网络上使用TCP套接字.

在这种应用程序中使用HTTP连接是否可行?我应该试试网络套接字吗?优缺点都有什么?

Sos*_*doc 5

你当然可以使用HTTP,但对于实时通信,最好的选择是使用websockets.

原始套接字(又称TCP套接字)不是W3C标准的一部分.尽管有些浏览器已实现它们,但我建议您避免使用它们,除非您不关心使用该特定浏览器锁定应用程序.

通常,使用Websockets是您的最佳选择,它们提供与原始套接字相同的性能,并且更易于使用JS.不幸的是,使用C++服务器可能是这更复杂,因为你的服务器必须实现的协议,你可以找到像在互联网上的一些实现这一之一,例如.

或者,如果您希望与客户端/服务器进行更简单的集成,您可以尝试使用Node.js来实现服务器逻辑,并使用Socket.io库来处理通信,这也将优雅地处理不兼容的浏览器.请注意,Socket.io 使用不同的协议,因此如果您想避免执行大量额外工作,我建议您不要尝试将其与当前的C++服务器一起使用.

总结一下

原始(TCP)套接字

  • 优点:更容易与您当前的C++服务器集成
  • 缺点:浏览器支持不保证,不是(web)标准,需要更多工作进行同步,通信等.

的WebSockets

  • 优点:性能与TCP套接字相当,更容易实现客户端
  • 缺点:您可能需要在服务器实现上做更多工作

我个人的建议是尽可能避免使用TCP套接字,并坚持标准.

编辑:显然,TCP套接字可能最终成为W3C标准,API仍然是草稿(和最近的一个),所以我仍然建议不要使用它们(最新的Chrome有实验性实现).