我是网络开发的新手,我只是想知道一些性能比较。
我正在网上建立一个俄罗斯方块战斗游戏。大多数游戏逻辑都在服务器内部,该服务器是用C ++构建的。对于客户,我打算使用cocos2d-js,这基本上是javascript。
球员'行为会影响对手。首先,用户'输入需要正确到达服务器,服务器将输入应用于逻辑,并将新的游戏状态发送回客户端。客户端只需要在屏幕上表示精灵。
我最初的计划是使用TCP套接字实现它,因为它可能需要低延迟。但是,我才意识到我们不会在网络上使用TCP套接字。
在这种应用程序中使用HTTP连接是否可行? 我应该试试网络套接字吗? 有什么优点和缺点?
答案 0 :(得分:5)
你当然可以使用HTTP,但对于实时通信,最好的选择是使用websockets。
原始套接字(又名TCP套接字)不属于W3C标准。 尽管某些浏览器有implemented个,但我建议您不要使用它们,除非您不关心使用该特定浏览器锁定您的应用程序。
通常,使用Websockets是您的最佳选择,它们提供与原始套接字相同的性能,并且更易于使用JS。 不幸的是,使用C ++服务器可能会更复杂,因为您的服务器必须实现协议,您可以在互联网上找到一些实现,例如this一个。
或者,如果您希望与客户端/服务器进行更简单的集成,您可以尝试使用Node.js来实现服务器逻辑,并使用Socket.io库来处理通信,这也可以优雅地处理不兼容的浏览器。请注意,Socket.io 使用不同的protocol ,因此如果您不想做大量的额外工作,我建议您不要尝试将其与当前的C ++服务器一起使用。< / p>
总结一下
我个人的建议是尽可能避免使用TCP套接字并遵守标准。
编辑:显然,TCP套接字might最终成为W3C标准,API仍然是草稿(并且是最近的一个),所以我仍然建议不要使用它们(最新的Chrome有一个实验性的实现。)
答案 1 :(得分:0)
我认为@Sosdoc给出了正确的答案。我想要添加的唯一一点是像SignalR这样的libarary可以帮助你实现websockets的实现。您可能想要查看github上的c ++ signalr-qt项目:https://github.com/p3root/signalr-qt