同一网络上的点对点web API

Peer to Peer web API on the same network

本文关键字:点对点 web API 网络      更新时间:2023-09-26

我正在和朋友制作一款基于网页的游戏,两个人在两台不同的电脑上使用chrome或firefox玩游戏。如果两台电脑在同一wifi网络上,我如何在两台电脑之间传输游戏数据?这有什么api吗?HTML5对此有什么帮助吗?

注:我没有服务器

您可以使用WebRTC的数据通道:
http://www.webrtc.org/

或者你可以设置一个服务器并使用WebSockets:
https://en.wikipedia.org/wiki/WebSocket

缺点:

对于WebRTC,您将需要一个STUN服务器,据我所知,它将交换您使用的ip地址。其余的通信是点对点的。

目前在WebRTC上的例子很少,因为它仍在开发中。只有Chrome和Firefox(夜间)支持该协议。

html5rocks对此写了一个很好的介绍(在这里粘贴太多了):
http://www.html5rocks.com/en/tutorials/webrtc/basics/

对于WebSockets,你需要一个作为集线器的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

或者你可以为你的游戏存储数据,并让游戏客户端在每次回合或计时时从数据库中检索必要的信息。