gpt4 book ai didi

javascript - Websockets 比 WebRTC 更快?

转载 作者:太空狗 更新时间:2023-10-29 15:41:37 26 4
gpt4 key购买 nike

我是 WebRTC 和 Websockets 领域的新手。我有兴趣制作 1 对 1 网络游戏。问题在于:如何将简单变量(主要是数字)从一个客户端发送到另一个客户端?

我有一个带有 websockets 的 Node.js 服务器(通过 socket.io)。所以,对于客户,我有两个解决方案:

  • 使用 Websockets:客户端 1 将 var 推送到服务器,然后服务器将 var 推送到客户端 2。此解决方案使我能够轻松地为一款游戏中的许多用户调整我的应用程序。
  • 使用 WebRTC:提议和答案通过带有 websockets 的服务器发送。然后,客户端 1 通过 DataChannel 将 var 推送到客户端 2(我不需要 getUserData)

我更喜欢使用 WebRTC,因为它简化了服务器的工作,让他可以管理更多的客户端。所以我设置了两个解决方案来比较,大惊喜! Websockets 比 WebRTC 快得多!

我的测试很简单:只是一个使用 Three.js 旋转的立方体,第一个客户端在每一帧进行一点旋转(每秒 60 次)并将旋转结果推送给客户端 2。在接收处,客户端 2 更新旋转和渲染。

使用 Websockets,结果是完美的,但是使用 WebRTC,客户端 2 运行非常慢,大约 5 FPS。

问题出在我的操作方式上吗?正常吗?我正在 Firefox 上的本地主机上工作。

最佳答案

问题出在 WebRTC 上。 Chrome 上的 WebRTC DataChannel 实现(可能同样适用于 firefox)限制在 30 kbps 左右。我不知道为什么?关于不要淹没互联网的事情。有一种破解方法可以绕过此限制 - 在设置之前手动更改 SDP 中提交的“B=”。

但是...WebRTC 是 p2p 不可靠的通信。这意味着您必须格外小心,以确保没有消息丢失,并且两个玩家观察到相同的事件和环境。我会选择 websockets 只是因为它们更容易理解和支持。如果游戏走红,我会考虑将 WebRTC 作为一种可能的优化。

但是,如果您玩这个游戏只是为了好玩,那么如果您选择 WebRTC,您将学到很多有用的东西。

如果您想查看 webrtc 在实际项目中的使用示例,请查看: http://viblast.com/demo

注意! 在 Chrome 31-32 左右引入基于 SCTP 的数据通道后,不再有带宽限制,并且有一种新的操作模式允许可靠的数据通道.

关于javascript - Websockets 比 WebRTC 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18978966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com