浏览器 html5 实时游戏。广播游戏状态选项

Browser html5 real-time game. broadcast game state options

我正在为 facebook 制作实时游戏。现在我使用 websockets 广播状态。但对于实时数据,udp 要好得多。我发现那里有 WebRTC。但我不能使用它,因为它是点对点的,而且我想要权威服务器(运行 的物理特性使作弊更难)。

我考虑以下选项:

  1. 使用闪光灯插座。但是我从来没有用过闪光灯。甚至可以在 javascript 中为 flash udp 制作包装器吗?有多难?服务器端需要一些特殊的东西吗?
  2. 也许浏览器以某种方式支持 udp?我可以使用 udp 将视频或音频流式传输到浏览器吗?也许可以为我的游戏状态使用视频流
  3. 使用网络套接字。我有一些客户端预测,我希望延迟会低于 100 毫秒(坦率地说,甚至更低)- 所以也许没问题?
  4. 使用这个 WebRTC 东西。也许我可以以某种方式在服务器上模拟浏览器并将其用作对等方?例如 运行 一堆 chrome 并使用 websocket 将游戏数据发送给它们(没有延迟,它们在一台机器上),然后通过 udp 流式传输到客户端?但是浏览器可以限制点对点连接,我需要在服务器上 cpu 到 运行 physics

最好的选择是什么?你实施过其中之一吗?结果如何?

您绝对可以构建或使用支持 WebRTC 数据通道的服务器端组件;从 browser/client 的角度来看,它只是另一个对等体。

严格来说,WebRTC 数据通道不是基于 UDP,而是基于 SCTP;但在实践中,它们提供了实时数据交换所需的灵活性(例如,能够建立有利于低延迟而非可靠性的连接)。

服务器端组件使用数据通道的一个例子是https://www.npmjs.com/package/rtc-dcstream