2013-04-15 28 views
14

我正在尝试创建一些基本的简单游戏实现(tic tac toe是开始的项目),它可以在不需要中央服务器的情况下通过互联网播放。该页面甚至不需要托管,可以在本地运行,也可以托管在Web服务器上。当托管游戏时,页面会通知主机他的IP地址,然后可以通过任何方法(电话,即时消息等)将其发送给朋友。该朋友可以将IP输入或复制/粘贴到加入对话框中,并可以玩有问题的游戏。我希望这两方能够在不安装任何附加软件的情况下做到这一点,并且不需要联系任何类型的中央服务器。如何以最小的开销实现简单的无服务器p2p浏览器浏览器消息传递?

我已经研究了很多涉及node.js,webrtc,websockets,flash,java等的潜在解决方案。其中每个解决方案都有与之相关的问题,例如需要中央服务器或需要客户端必须下载他们计算机上尚未安装的东西,或者只传输音频和视频,而不能用于发送数据信息。告诉某人他们需要下载java ..或者让我用flash开发应用程序可能看起来微不足道,但这完全违背了我的最终目标。

如果它只是不可能做我想完全用javascript做的事情,那么它是不可能的。但我不明白为什么它不可能,因为浏览器可以自己发送和接收文本数据到解析为IP或直接到IP的URL。其他解决方案是受欢迎的,但如果这是不可能的话,那应该是。

的什么,我试图做具体要求简单的解释是:

  1. 应该使用完全免费的(如啤酒)的技术。 (没有闪光灯,我意识到Flash Player的网络应用程序可以免费编码,但是阶层中的点对点需要注册一个测试版密钥,假设我可以免费获得该密钥,则永远不会保持自由。)

  2. 没有外部服务器或虚假的点对点。 (再次在闪存或基于统一的解决方案,其中点对点的模仿可以,只要你使用他们的中央服务器来达到的)

  3. 无需客户端下载(肯定的是,大多数人都java或flash安装,但许多不要,java是一个非常大的下载,不适合计算机不识字的用户,它甚至会尝试安装工具栏,最重要的是,我的很多用户不会愿意下载任何东西,包括java或unity 。掌握与这个项目已经提到)

总之,如果AJAX可以发送请求到指定的IP,然后等待响应自己的问题。为什么我不能得到简单的对同行在纯js的消息?或者我可以吗?

我不需要托管一个完整的Web服务器或一个单独的应用程序或任何类型的插件来发送和接收数据。

我错过了什么吗?

+0

可能的重复[如何创建一个没有任何服务器的P2P网络聊天?](http://stackoverflow.com/questions/2463665/how-create-a-p2p-web-chat-without-any-server) –

+0

没有重复。 [WebRTC](https://en.wikipedia.org/wiki/WebRTC)的存在改变了这个问题的含义。 – Wolf

回答

11

在推荐了pubnub之后,我看了一下,并留下了深刻的印象。然而,我最终偶然发现了我正在寻找的UNBELIEVABLY。 RTCDataChannel就是答案。 This site终于表明,我想要的是可能的。浏览器对这一功能的支持虽然很小,但正在不断增长,整个考验都强化了我对浏览器社区对等应用程序日益增长的支持的信心。

+1

PubNub还提供了一个WebRTC信号库。如果你不想建立你自己的信令服务器,这可能会有帮助。你可以在这里找到它:https://github.com/pubnub/webrtc(完整免责声明我在PubNub上工作并构建了它们的WebRTC库) – sharpper

+0

[浏览器支持](http://caniuse.com/#search=rtc) – mpen

0

总之,如果AJAX可以发送请求到指定的IP,并听取 的回应。为什么我不能得到简单的点对点纯 JS短信?或者我可以吗?

这是由于ajax请求必须由HTTP服务器处理,所以您仍然需要为每个客户端安装服务器。

说你要

  1. 免费
  2. 没有外部服务器
  3. 没有客户端下载

我会说这是不可能与所有的这些要求进行归档,除了你砍一个的关闭。

我的建议是pubnub。这个解决方案仍然需要一个服务器,它不是免费的(他们有一个免费的使用层)。但好处是你有一个模拟p2p连接,而不需要做服务器的事情,不需要客户端下载。