如何以最小的开销实现简单的无服务器p2p浏览器到浏览器消息?

时间:2013-04-15 13:48:01

标签: javascript ajax text p2p

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

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

如果我无法完成我在javascript中尝试完成的操作,那么这是不可能的。但考虑到浏览器能够自己发送和接收解析为IP或直接转换为IP的URL的文本数据,我不明白为什么它不可能。其他解决方案是受欢迎的,但如果这是不可能的,那真的应该是。

对我尝试做的确切要求的简单解释是:

  1. 应该完全免费(如啤酒)技术。 (没有闪存,我意识到Flash播放器的网络应用程序可以免费编码,但点对点的地层需要注册一个beta密钥,假设我可以免费获得,并不一定永远免费。 )

  2. 没有外部服务器或错误的点对点。 (再次像在flash或基于统一的解决方案中,只要你使用他们的中央服务器就可以实现对等模仿)

  3. 没有客户端下载(当然,大多数人都安装了java或flash,但是很多人都没有,而java是一个非常大的下载,对计算机文盲用户不友好。它甚至试图安装工具栏吧最重要的是,我的许多用户根本不愿意下载任何东西,包括java或unity。这些已经提到了与这个项目有关的问题。

  4. 总之,如果ajax可以向指定的IP发送请求并侦听响应..为什么我不能在纯js中获得简单的点对点消息传递?或者我可以吗?

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

    我错过了什么吗?

2 个答案:

答案 0 :(得分:14)

在推荐pubnub后,我看了一眼,并留下了一些印象。然而,我最终偶然发现了我正在寻找的不可思议的东西。 RTCDataChannel就是答案。 This site终于表明我想要的是可能的。浏览器对此功能的支持很小但不断增长,整个考验加强了我对浏览器社区中对等应用程序不断增长的支持的信心。

答案 1 :(得分:0)

  

总之,如果ajax可以向指定的IP发送请求并进行侦听   为了回应..为什么我不能在纯粹中获得简单的点对点消息传递   JS?或者我可以吗?

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

说你想要

  1. 自由
  2. 没有外部服务器
  3. 没有客户端下载
  4. 我想说除了你把其中一个关掉之外,不可能存档所有这些要求。

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