我正在和我的朋友制作一个基于网络的游戏,其中两个人在 2 台不同的计算机上,并且在 chrome 或 firefox 上玩。如果两台电脑在同一个wifi网络上,如何在两台电脑之间传输游戏数据?有没有这方面的 API?HTML5 对此有什么帮助吗?
PS我没有服务器
我正在和我的朋友制作一个基于网络的游戏,其中两个人在 2 台不同的计算机上,并且在 chrome 或 firefox 上玩。如果两台电脑在同一个wifi网络上,如何在两台电脑之间传输游戏数据?有没有这方面的 API?HTML5 对此有什么帮助吗?
PS我没有服务器
您可以使用 WebRTC 的数据通道:
http ://www.webrtc.org/
或者您可以设置服务器并使用 WebSocket:
https ://en.wikipedia.org/wiki/WebSocket
缺点:
对于 WebRTC,您将需要一个我理解的 STUN 服务器,它将交换您使用的 IP 地址。其余的通信是点对点的。
目前 WebRTC 上的示例很少,因为它仍在开发中。只有 Chrome 和 Firefox (nightly) 支持该协议。
html5rocks 对此写了一个很好的介绍(这里粘贴太多了):
http ://www.html5rocks.com/en/tutorials/webrtc/basics/
对于 WebSocket,您需要一个充当集线器的 Web 服务器。然而,这很容易设置,因为它使用标准 HTTP 协议。如果您在 .Net 平台上,您可以使用例如 SignalR,它易于启动和运行。
请注意,对于 WebSocket,它最初必须是同源的。然而,这可以规避(CORS)。通常,使用 WebSockets 的脚本位于同一个网页中,并且还将与加载它的同一个域进行通信。
WebSockets 还有其他选项可以与 node.js、socket.io、ruby 等一起使用。
更新:
如果您没有服务器,那么使用纯 html5 进行点对点会很困难。你必须有一些东西来协商连接。
您可以通过在您的计算机上本地设置服务器并允许其他人直接连接到该服务器来解决此问题。
参见例如这个(免费的开源 TURN/STUN 服务器):
http ://code.google.com/p/rfc5766-turn-server/
注意:此服务器针对 *NIX。如果您使用的是 Windows,我找不到免费的解决方案。有商业解决方案作为另一种选择。
有几种方法可以解决您的问题,哪种方法效果最好取决于您的游戏要求以及构建方式。
我不知道有任何技术可以直接从浏览器发送到浏览器,而中间没有某种服务器。
看看 HTML5 Websockets:http ://www.tutorialspoint.com/html5/html5_websocket.htm
或者,您可以存储游戏的数据,并让游戏客户端在每个回合或滴答计时器等时从数据库中检索必要的信息。