我正在尝试在 JS 中制作简单的井字游戏。
我做了几乎所有的东西。现在只有一件事要做。
我想让它可以与某人在线玩。
我想通过互联网在两个游戏之间发送数据。
不幸的是,我的服务器不支持 Node.JS。
有没有办法让它在没有任何服务器端“套接字”的情况下发生。
我想我可以用它XMLHttpRequest()
来保存/加载数据到/从服务器文件中并像这样玩,但我认为它需要大量代码,也许对于 ttt 来说它足够快,但对于更复杂的游戏,它不会足够了。
我知道这很难,但是在 node.js 之前他们是怎么做到的?
对于像 Tic-Tac-Toe 这样玩家轮流进行的游戏来说,延迟肯定比其他所有通信因素都排在第二位。仅出于这个原因,通常通过使用XMLHttpRequest
类或Fetch API仅与 HTTP 协议通信是一种非常合理的方法,它将为您节省大量编程工作。
否则,当需要一个或多个低延迟和/或RTC通道时,希望有一些好的理由,WebRTC和WebSocket都是可行的候选者。
一方面,WebRTC 绝对可以进行点对点,而 WebSocket 使用客户端-服务器模型。但即使是 WebRTC 也需要“信令”服务来交换对等标识符,然后最终切换到直接在对等节点之间进行通信。虽然建立 WebRTC 通信需要对等标识符,但 API 故意不涵盖对等标识符的交换方式——无论您想设计信令服务,都由您决定。对于所有 WebRTC 问题,您可以“POST”一个对等 ID 到 HTTP 服务器,并使用其他对等的 Web 浏览器检索它,反之亦然。WebRTC 从已知的对等 ID 开始。
否则,如果配置为这样做,WebRTC 能够利用STUN和/或TURN服务来维持对等连接,否则网络上禁止任何两个客户端之间的直接 IP 路由——这是真正对等的必要先决条件- 同行交流。
并非在所有情况下都需要 STUN/TURN 服务,但了解平均网络条件,如果不使用 STUN 或 TURN 或两者,您的应用程序对于任意网络上的任意两个客户端都不会非常可靠。就像在双方被至少一个防火墙或一个兼具一体的顽固路由器分隔的场景中一样。
然后,TURN 服务将透明地路由 WebRTC 通信,充当中继。
STUN 服务在客户端之间的防火墙中打孔,以便之后可以进行点对点通信。这意味着与 TURN 服务相比,它在后者建立后不会在通信中发挥任何积极作用。
的WebRTC是一个有点复杂,特别是如果你的线沿线的预期的APIsend
和receive
,而是一种简化的连接例子应该是可以理解的开发商。
您可能也不需要直接使用 WebRTC API,有些库将 WebRTC 封装成一种或另一种更简单的 API,API 同时隐藏了 WebRTC 的更多边缘或“样板”方面,这也有助于最大程度地降低获取的风险陷入麻烦,因为不同的用户代理因以不同的方式实现 WebRTC 的不同部分而臭名昭著。
这些库之一是PeerJS,但毫无疑问还有其他库。
WebSocket API 与 WebRTC 不同,它需要一个兼容 WebSocket 的服务器,而 WebSocket API 不做点对点。好消息是 1) 符合 WebSocket 的服务通常只是一个高级中继(通常与应用程序后端逻辑融合),尽管在应用程序级别而不是 TURN 的会话级别工作,并且 2) 有很多“转向”关键”WebSocket 服务器实现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句