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

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

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

最好的方法是什么?

更新

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

【问题讨论】:

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

标签: javascript android ios network-programming browser


【解决方案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) 通信。因此,您有以下选择:

  1. 带有 WebUI 的应用程序 + 服务器(可能)
  2. App + Chrome App(Chrome App 可以启动网络服务器,见http://www.devworx.in/news/misc/chrome-apps-can-now-run-a-web-server-135711.html
  3. 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,但你仍然需要一个信令服务器...
    • 我明白了,所以它不适用于本机应用程序。干杯!
    猜你喜欢
    • 2019-05-29
    • 2017-12-26
    • 2014-06-08
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多