我是WebRTC和Websockets世界的新手。我有兴趣制作1对1网页游戏。 问题只是:如何从客户端向另一个客户端发送简单变量(主要是数字)?
我有一个带websockets的Node.js服务器(通过socket.io)。 所以,对于客户,我有两个解决方案:
我更喜欢使用WebRTC,因为它简化了服务器的工作,使他能够管理更多的客户端。 所以我设置了两个比较的解决方案,并且大惊喜! Websockets比WebRTC快得多!
我的测试很简单:只是一个使用Three.js旋转的立方体,第一个客户端在每个帧(每秒60个)进行一点旋转并将旋转结果推送到客户端2.在接收时,客户端2更新旋转和渲染。
使用Websockets,结果是完美的,但是使用WebRTC,客户端2运行速度非常慢,如5 FPS。
问题是我这样做的方式吗?这是正常的吗? 我正在使用Firefox上的localhost。
答案 0 :(得分:8)
问题在于WebRTC。 Chrome上的WebRTC DataChannel实现(可能与firefox相同)限制在30 kbps左右。我不知道原因是什么?关于不会充斥互联网的事情。有一个黑客可以规避这个限制 - 在设置之前手动更改SDP中的“B =”字段。
但是...... WebRTC是p2p UNRELIABLE通信。这意味着您必须格外小心,确保没有消息丢失,并且两个玩家观察相同的事件和环境。我会选择websockets,因为它们更容易理解和支持。如果游戏变得病毒式传播,我会将WebRTC视为可能的优化。
但是,如果您只是为了好玩而玩这个游戏,那么如果您选择WebRTC,您将学到很多有用的东西。
如果您想看一个如何在实际项目中使用webrtc的示例,请查看: http://viblast.com/demo
NB!在Chrome 31-32周围引入基于SCTP的数据通道后,不再有带宽限制,并且有一种新的操作模式允许可靠的数据通道