我正在为 Facebook 制作实时游戏。现在我使用 websocket 广播状态。但对于实时数据udp要好得多。我发现那里有 WebRTC。但我无法使用它,因为它是点对点的,而且我想要权威服务器(运行物理并使其更难作弊的服务器)。
我考虑以下选项:
- 使用闪光灯 socket 。但我从来没有用过闪光灯。是否有可能在 javascript 中为 flash udp 制作一个包装器?有多难?服务器端需要一些特殊的东西吗?
- 也许浏览器以某种方式支持 udp?我可以使用 udp 将视频或音频流式传输到浏览器吗?也许可以使用视频流来显示我的游戏状态
- 使用网络套接字。我有一些客户端预测,我希望延迟低于 100 毫秒(坦白说,甚至更低) - 所以也许可以?
- 使用这个 WebRTC 东西。也许我可以以某种方式在服务器上模拟浏览器并将其用作对等点?例如,运行一堆 chrome 并使用 websocket 向它们发送游戏数据(无延迟,它们位于一台机器上),然后通过 udp 流式传输到客户端?但浏览器对点对点连接有限制,我需要服务器上的 CPU 来运行物理
最好的选择是什么?您实现过其中一项吗?结果如何?
最佳答案
您绝对可以构建或使用支持 WebRTC 数据通道的服务器端组件;从浏览器/客户端的 Angular 来看,它只是另一个对等点。
严格来说,WebRTC数据通道不是基于UDP的,而是基于SCTP的;但实际上,它们提供了实时数据交换所需的灵 active (例如,能够建立有利于低延迟而非可靠性的连接)。
使用数据通道的服务器端组件的示例是 https://www.npmjs.com/package/rtc-dcstream
关于javascript - 浏览器html5实时游戏。广播游戏状态选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38388638/