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

Ale*_*ugh 19 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.这些已经提到了与这个项目有关的问题)

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

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

我错过了什么吗?

Ale*_*ugh 14

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

  • PubNub还提供了一个用于信令的WebRTC库.如果您不想构建自己的信令服务器,这可能会有所帮助.你可以在这里找到它:https://github.com/pubnub/webrtc(完全免责声明我在PubNub工作并构建他们的WebRTC库) (3认同)