对于实时Web应用程序,我对websockets有什么更快的选择?

亚当·阿罗德

我打算编写一个实时合作多人游戏。目前,我处于研究阶段。我已经写了一个使用websockets的基于回合的游戏,并且运行良好。

但是,我没有尝试使用这种技术编写实时游戏。我的问题是关于websockets的。有没有其他方法可以处理(浏览器)客户端之间的通信?我的想法是在每个客户端中具有游戏状态,并且仅将服务器用作中介器/同步工具将增量发送给客户端。

我主要关心的是网络速度。我希望客户能够尽快接收彼此的动作,以便我的游戏保持实时。我每秒大约有20-30帧,每帧少于一千字节的数据(这意味着每个客户端每秒最多有20-30千字节的数据)。

我知道诸如“网络速度”之类的东西取决于连接,但是我对“其他条件是否相等”情况感兴趣。

jfriend00

从标准浏览器来看,webSocket将是您最好的选择。仅有的两种选择是webSocket和Ajax。两者都是TCP的内幕,因此一旦建立连接,它们几乎就提供相同的传输。但是,webSocket是一个持久连接,因此您每次想发送东西时都可以节省连接开销。加上webSocket的持久连接,您可以直接从服务器发送到想要的客户端。

在典型的游戏设计中,基础游戏引擎需要适应服务器与任何给定客户端之间的传输速度。如果客户端的连接速度较慢,则您必须将发送的数据包数量减少到可以保持的水平(在这种情况下,可能更新更少的帧)。连接速度就是如此,因此您必须使您的应用以最快的速度提供最佳体验。

您可以做一些其他事情来优化传输的使用:

  1. 一次收集所有需要发送的数据,然后以较大的发送操作(而不是大量的小发送)发送。在webSocket中,请勿发送三个单独的消息,每个消息都具有自己的数据。而是创建一条包含所有三条消息中的信息的消息。

  2. 只要有可能,就不要通过发送,等待响应,再次发送,等待响应等方式来依赖连接的延迟。相反,请尝试并行化操作,以便按以下方式发送,发送,发送和处理响应:他们进来。

  3. 调整来自服务器的传出数据包的设置,这样它们就没有Nagle延迟,可以等待查看同一数据包中是否还有其他数据。请参阅Nagle的算法我认为您无法在浏览器中从客户端进行调整。

  4. 确保以最小的数据包大小对数据进行尽可能高效的编码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么是ElasticSearch-Hadoop(es-hadoop)?对于实时Web应用程序,它比HBase的优势是什么?

来自分类Dev

如何获取我的Web应用程序的实时数据?

来自分类Dev

对于富Web应用程序,嵌套链接(标记)的有效替代方法是什么?

来自分类Dev

实时 Web 应用程序 + 移动应用程序我应该更喜欢哪个 Node 框架

来自分类Dev

如何使我的应用程序运行更快

来自分类Dev

为什么我的应用程序运行缓慢,是否有任何代码可以使该应用程序运行得更快?

来自分类Dev

为什么我的有角度的应用程序没有选择可操作的CSS?

来自分类Dev

我需要在Web应用程序中运行不受信任的服务器端代码-我有什么选择?

来自分类Dev

SignalR是否适合我的Web应用程序,还是有更好的选择?

来自分类Dev

SignalR是否适合我的Web应用程序,还是有更好的选择?

来自分类Dev

为什么Web Inspector向我显示“没有可检查的应用程序”?

来自分类Dev

为什么我的Web应用程序项目中的属性文件没有更新?

来自分类Dev

在Azure中选择应用程序服务位置会对Web应用程序产生什么影响?

来自分类Dev

我的Web应用程序使用什么框架?

来自分类Dev

Web应用程序:我应该发送回给用户什么?

来自分类Dev

我的骆驼应用程序与我要集成的应用程序有什么关系?

来自分类Dev

对于 Web 应用程序开发人员来说,什么是最简单的区块链?我可以用它做什么?

来自分类Dev

对于Jhipster Monolith应用程序,有状态比无状态方法有什么好处?

来自分类Dev

对于未从bash启动的应用程序,Ubuntu为什么不从我的.bashrc / .profile加载设置?

来自分类Dev

为什么Firebase无法运行我的functions文件夹(对于节点应用程序)?

来自分类Dev

对于未从bash启动的应用程序,Ubuntu为什么不从我的.bashrc / .profile加载设置?

来自分类Dev

没有Node.js的实时HTML5 Web应用程序

来自分类Dev

我的基本ReactJS应用程序有什么问题?

来自分类Dev

为什么我的应用程序中有很多图标?

来自分类Dev

为什么我应该更新Java JDK 1.6 Web应用程序,不这样做会有什么风险?

来自分类Dev

在实时Rails应用程序中更改config.time_zone有什么含义?

来自分类Dev

移动应用程序测试和Web应用程序测试有什么区别

来自分类Dev

多个应用程序可以访问同一DeckLink设备(openCV和rtmp推送)?我有什么选择?

来自分类Dev

使用websockets和node.js的Web应用程序

Related 相关文章

  1. 1

    什么是ElasticSearch-Hadoop(es-hadoop)?对于实时Web应用程序,它比HBase的优势是什么?

  2. 2

    如何获取我的Web应用程序的实时数据?

  3. 3

    对于富Web应用程序,嵌套链接(标记)的有效替代方法是什么?

  4. 4

    实时 Web 应用程序 + 移动应用程序我应该更喜欢哪个 Node 框架

  5. 5

    如何使我的应用程序运行更快

  6. 6

    为什么我的应用程序运行缓慢,是否有任何代码可以使该应用程序运行得更快?

  7. 7

    为什么我的有角度的应用程序没有选择可操作的CSS?

  8. 8

    我需要在Web应用程序中运行不受信任的服务器端代码-我有什么选择?

  9. 9

    SignalR是否适合我的Web应用程序,还是有更好的选择?

  10. 10

    SignalR是否适合我的Web应用程序,还是有更好的选择?

  11. 11

    为什么Web Inspector向我显示“没有可检查的应用程序”?

  12. 12

    为什么我的Web应用程序项目中的属性文件没有更新?

  13. 13

    在Azure中选择应用程序服务位置会对Web应用程序产生什么影响?

  14. 14

    我的Web应用程序使用什么框架?

  15. 15

    Web应用程序:我应该发送回给用户什么?

  16. 16

    我的骆驼应用程序与我要集成的应用程序有什么关系?

  17. 17

    对于 Web 应用程序开发人员来说,什么是最简单的区块链?我可以用它做什么?

  18. 18

    对于Jhipster Monolith应用程序,有状态比无状态方法有什么好处?

  19. 19

    对于未从bash启动的应用程序,Ubuntu为什么不从我的.bashrc / .profile加载设置?

  20. 20

    为什么Firebase无法运行我的functions文件夹(对于节点应用程序)?

  21. 21

    对于未从bash启动的应用程序,Ubuntu为什么不从我的.bashrc / .profile加载设置?

  22. 22

    没有Node.js的实时HTML5 Web应用程序

  23. 23

    我的基本ReactJS应用程序有什么问题?

  24. 24

    为什么我的应用程序中有很多图标?

  25. 25

    为什么我应该更新Java JDK 1.6 Web应用程序,不这样做会有什么风险?

  26. 26

    在实时Rails应用程序中更改config.time_zone有什么含义?

  27. 27

    移动应用程序测试和Web应用程序测试有什么区别

  28. 28

    多个应用程序可以访问同一DeckLink设备(openCV和rtmp推送)?我有什么选择?

  29. 29

    使用websockets和node.js的Web应用程序

热门标签

归档