移动应用程序和电脑浏览器之间的点对点通信

Posted

技术标签:

【中文标题】移动应用程序和电脑浏览器之间的点对点通信【英文标题】:peer to peer communication between mobile app and pc browser 【发布时间】:2014-09-30 08:45:37 【问题描述】:

我正在做一个项目,我需要我的移动应用程序与我的电脑上的网络浏览器对话,这两个设备都通过 wifi 连接。该应用程序将发送计算机浏览器接收的数据,然后执行一些客户端代码。然后浏览器可能会发送一些反馈。

我最初的方法是让应用程序与一个端点对话,该端点又与浏览器的客户端 (javascript) 对话。

最好的方法是什么?

更新

我不确定Socket.io 是否是一个可能的解决方案,因为它需要托管服务器。是否可以使用套接字解决这个问题?

【问题讨论】:

如果您能简单地说明您正在尝试做什么,那将会非常有帮助。例如,这是一款赛车游戏吗?是短信系统吗?它涉及图像吗?请说出目标! 欺骗..***.com/questions/20975622/… 老实说,听起来您正试图将两个截然不同的东西拼凑在一起。在大多数情况下,浏览器就是这样 - 一个网络查看器。最近有越来越多的客户端计算用于 Web 浏览,但是如果没有 Java 小程序之类的东西,您似乎正在尝试从客户端-客户端关系中创建客户端 看起来 pubnub 是目前的解决方案,谢谢大家。 【参考方案1】:

您现在已经编辑了您的问题提到了 P2P。实现 PHONE TO BROWSER 是相当困难的(即,我的意思是 6 到 12 个人工月的工作——和/或根本不可能)。然而,在大多数情况下,您可以立即(即“每个平台上的一行代码”)通过使用 pubnub 之类的服务来解决问题。就像没有人再有后端并且一切都只是通过 parse.com 或游戏中心完成一样,像您提到的网络现在只是通过 pubunb(或任何竞争对手)完成。

这是一个极其常见的用例问题 - 每个人都只是使用下面提到的 PubNub 或其竞争对手之一。


现在再简单不过了,只需使用 pubnub.com

它是世界上最大的数据消息服务是有原因的!

基本上没有其他现实的方法,就是这么简单——几行代码。

【讨论】:

这意味着两个设备都将通过互联网连接。我对网络技术没有经验。是否有另一种方法可以让两个设备都通过套接字进行通信? 基本没有。幸运的是,这是 pubnub 中的一行代码。 @JoeBlow 这不是对 PubNub 的攻击;我没用过,也不太了解。但是,OP 要求 P2P 解决方案,而 PubNub 是 not。 PubNub 也不是免费的,这至少让我想知道您是否与他们有关联(尽管我想在正确性方面既不存在也不存在)。但是当你说“基本上没有其他现实的方法”时,也许我只需要你澄清一下。看到您提出的解决方案与问题不符,PubNub 是唯一现实的方法吗? 一点澄清,我已经编辑了问题并添加了“点对点”一词,但无论如何我一直在寻找 P2P 解决方案。抱歉,如果我造成了任何混乱,但pubnub 看起来像是一条出路,尽管我会继续寻找更好的解决方案。谢谢大家。 终于开始了,谢谢!【参考方案2】:

所以简短的回答是:目前并非所有浏览器都可以进行真正的点对点 (P2P) 通信。因此,您有以下选择:

    带有 WebUI 的应用程序 + 服务器(可能) App + Chrome App(Chrome App 可以启动网络服务器,见http://www.devworx.in/news/misc/chrome-apps-can-now-run-a-web-server-135711.html) App + WebApp 和插件(Flash、Silverlight 或 Java)

我个人更喜欢解决方案 1。

【讨论】:

【参考方案3】:

您需要一台服务器。如果您从典型的防火墙角度严格考虑这个问题,PC 或移动设备将忽略连接,除非它们自己启动连接。因此,PC 和移动设备都无法与对方建立连接。

我的理解是 Web 浏览器不支持 javascript 中的标准套接字。您可以使用类似的 websocket,但套接字和 websocket 不直接兼容。

您可以在 PC 上设置一个简单的服务器,并让该服务器在移动设备和 PC 浏览器之间中继消息。移动设备和 PC 浏览器都连接到服务器。这基本上是外部服务将为您做的事情。

【讨论】:

对。你基本上“不能”从浏览器套接字:截至 2014 年,基本上有实验性的解决方案,在某些情况下可以与一些浏览器一起使用(hypery2k 已经概述了这些)。正如 mattm 所说,您需要一台服务器。关于制作服务器:这似乎确实令人难以置信,在这个时代,人们会从头开始构建一个服务来做到这一点(假设你有大量的、难以置信的冗余、多宿主的全球硬件),而不仅仅是使用其中一个可用于此的日常服务,用于 100% 的用例!【参考方案4】:

PeerJS 是您正在寻找的:

http://peerjs.com

【讨论】:

这在浏览器端看起来是一个很棒的解决方案,超级 - 但是你知道在 ios/android 端可以用这个做什么吗?干杯! WebRTC等文章blogging.alastair.is/… 点击一下,peerjs.com/examples 看来 PeerJS 只适用于有限的浏览器。每当我点击示例时,它只会显示“不支持” 你可以使用带有cordova的WebRTC (github.com/alongubkin/phonertc) 它支持iOS和Android,但你仍然需要一个信令服务器... 我明白了,所以它不适用于本机应用程序。干杯!

以上是关于移动应用程序和电脑浏览器之间的点对点通信的主要内容,如果未能解决你的问题,请参考以下文章

各位,请问有没有支持CC2530的点对点通信的zigbee例程呢? 谢谢

数据链路层中的点对点通信详解

bluetooth是啥意思?

MPI 中不同类型的点对点通信在性能方面有何不同?

Android与windows如何通过互联网点对点传文件

基于Linux的点对点VXLAN通信