在同一网络上的Peer to Peer Web API

时间:2013-06-19 03:30:50

标签: javascript html html5

我正和朋友一起制作基于网络的游戏,其中两个人在两台不同的计算机上玩Chrome或firefox。如果它们位于同一个wifi网络上,如何在2台计算机之间传输游戏数据?有没有这方面的API? HTML5有什么用于此的吗?

P.S。我没有服务器

2 个答案:

答案 0 :(得分:1)

您可以使用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的免费解决方案。有商业解决方案作为另一种选择。

答案 1 :(得分:-1)

有几种方法可以解决您的问题,哪种方法效果最好取决于您的游戏要求以及如何构建它。

我不知道任何技术会直接从浏览器发送到浏览器而没有某种服务器。

查看HTML5 Websockets:http://www.tutorialspoint.com/html5/html5_websocket.htm

或者,您可以存储游戏的数据,并让游戏客户端在每次转弯或勾选计时器等时从数据库中检索必要的信息。