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

10
我正在开发一个项目,需要我的移动应用程序与我连接在同一WiFi上的电脑浏览器进行通讯。应用程序将发送数据,然后由计算机浏览器接收,并执行客户端代码。然后浏览器可能会发送一些反馈信息。
我的初始方法是让应用程序与一个终端进行通讯,该终端进而与浏览器的客户端(javascript)进行通讯。
哪种方法最好呢?
更新:
我不确定Socket.io是否是一种可行的解决方案,因为它需要托管服务器。这是否可能使用sockets来解决?

如果您能简单地说明您想要做什么,那将会非常有帮助。例如,这是一个赛车游戏吗?还是一个短信系统?它涉及图像吗?请直接陈述目标! - Fattie
复制...http://stackoverflow.com/questions/20975622/peer-to-peer-between-desktop-and-mobile-app - Fattie
说实话,你似乎在试图将两个非常不同的东西拼凑在一起。在大多数情况下,浏览器只是一个网页查看器。最近,在Web浏览中进行了越来越多的客户端计算,但如果没有像Java小程序这样的东西,你似乎正在试图从客户端-客户端关系中建立客户端<-服务器关系。如果您需要从手机查看PC上的信息,有更简单的方法可以做到这一点,反之亦然。 - Ian M
看起来PubNub现在是解决方案,谢谢大家。 - Ankit Rustagi
4个回答

3
您现在已经编辑了您的问题,提到了P2P。这是非常难实现的PHONE TO BROWSER(即,我指的是需要6到12个人月的工作 - 或者根本不可能)。然而,在大多数情况下,您可以通过使用像pubnub这样的服务来立即解决问题(即“每个平台上一行代码”)。就像没有后端一样,所有网络都只是用parse.com或游戏中心完成的,您所提到的网络也是用pubunb(或任何竞争对手)完成的。
这是一个非常常见的用例问题 - 每个人都只使用如下所述的PubNub或其竞争对手之一。
现在使用pubnub.com变得非常容易。
这是世界上最大的数据消息服务,有充分的理由!
事实上,几行代码就可以轻松实现,基本上没有其他现实的方法。

enter image description here


这意味着两个设备都将通过互联网连接。我对网络技术不是很有经验。是否有另一种方法,让两个设备可以通过套接字进行通信? - Ankit Rustagi
基本上不需要。幸运的是,在PubNub中只需要一行代码。 - Fattie
1
@JoeBlow 这并不是针对 PubNub 的攻击;我没有使用过它,也不太了解它。然而,OP 要求的是 P2P 解决方案,而 PubNub 不是。PubNub 也不是免费的,这让我想知道你是否与他们有关联(尽管在正确性方面这无关紧要)。但当你说“实际上没有其他现实的方法”时,也许我只需要你澄清一下。既然你提出的解决方案与问题不匹配,那么 PubNub 是唯一现实可行的方法的具体方法是什么? - jmar777
小小的澄清,我已经编辑了问题并添加了“点对点”的术语,但我一直在寻找P2P解决方案。如果我造成了任何困惑,我很抱歉,但是pubnub看起来像是一个出路,虽然我会继续寻找更好的解决方案。谢谢大家。 - Ankit Rustagi
1
最终我决定前进,谢谢! - Ankit Rustagi
显示剩余2条评论

3
简而言之: 目前所有浏览器都无法实现真正的点对点(P2P)通信。 因此,您有以下选项:
  1. 使用带有WebUI的应用程序+服务器(也许)
  2. 使用应用程序+ Chrome应用程序(Chrome应用程序可以启动Web服务器,请参见http://www.devworx.in/news/misc/chrome-apps-can-now-run-a-web-server-135711.html
  3. 使用插件(Flash、Silverlight或Java)的应用程序+ WebApp
我个人更喜欢解决方案1。

2
你需要一个服务器。如果你从典型的防火墙角度考虑这个问题,那么PC或移动设备将会忽略连接,除非它们自己发起连接。因此,PC和移动设备都无法与另一个设备建立连接。
我的理解是,Web浏览器不支持javascript中的标准套接字。你可以使用类似的websocket,但套接字和websocket并不直接兼容。
你可以在PC上设置一个简单的服务器,并让这个服务器在移动设备和PC浏览器之间中继消息。移动设备和PC浏览器都连接到服务器。这基本上就是外部服务为你所做的。

正确。您基本上无法从浏览器中进行套接字操作:截至2014年,基本上有一些实验性解决方案,可以在某些情况下与少数浏览器配合使用(hypery2k已经概述了这些)。正如mattm所说,您需要一个服务器。关于制作服务器:在这个时代,人们会从头开始构建此类服务(假设您拥有大规模、极其冗余、全球范围内的硬件),而不是使用每天可用于此类服务的常规服务之一,这些服务在100%的使用情况下都被使用! - Fattie

1

这看起来是浏览器端的一个很好的解决方案,但你知道在iOS / Android端可以做什么吗?干杯! - Fattie
WebRTC数据通道或者说我如何学会放肆挥舞手臂的文章。http://blogging.alastair.is/webrtc-datachannels-or-how-i-learned-to-stop-worrying-and-flap-my-arms/ - Fattie
点击 http://peerjs.com/examples 浏览,似乎 PeerJS 只能在有限的浏览器上运行。每当我点击示例时,它只会显示“不支持”。 - Fattie
你可以使用cordova(https://github.com/alongubkin/phonertc)与WebRTC一起使用。它支持iOS和Android,但仍需要一个信令服务器... - hypery2k
我明白了,所以它不适用于原生应用程序。干杯! - Fattie
你可以使用上面的 Cordova 插件中的本地代码 ;) - hypery2k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接