1

我想构建一个允许 P2P 通信(发送消息,交换文件)的应用程序,我使用 phonegap 构建应用程序,因为我想要我的应用程序跨平台。

我知道 WebRTC 允许实时通信,但浏览器不能很好地支持它。我还找到了phonegap的Websocket插件,这满足了我的部分要求,我可以使用这个发送消息,但是如果我使用websocket将文件从A发送到B,我想所有的流量都会通过我的服务器,这对服务器来说是一个压力而且我不希望我的服务器承载这么多流量。我无法在 A 和 B 之间建立点对点连接。

有没有办法在电话上进行 P2P 通信?也欢迎任何解决方法。

4

3 回答 3

0

在 WebRTC 上,您可以使用 RTCDataChannel,根据我的经验,在 chrome 上,使用这涉及编写大量关于可靠性的代码,因为数据包无序到达,或者如果发送太快则根本没有。但是我认为随着 WebRTC 规范的发展,这将随着实施而改进。

使用它来生成启用 RTCDataChannel 的对等连接:

var localpeer = new webkitRTCPeerConnection(localConfig,{ 'optional': [{'RtpDataChannels': true }] });
于 2013-08-03T05:48:45.123 回答
0

您可以使用 Boost asio 套接字来构建您自己的 P2P 应用程序。但您需要为 Android NDK 和 IOS 构建它。在得出结论之前,请查看这些链接 官方“Boost 库”是否支持 Android 和 iOS? 将 (Boost) Asio 与 Android NDK 一起使用的限制 http://beta.boost.org/development/tests/trunk/developer/summary.html
http://www.codeproject.com/Tips/555070/Boost-vs-OSX -iOS-XCode

希望能帮助到你

于 2013-08-01T11:34:30.197 回答
0

您可以使用 Flash 或最近的 WebRTC 进行点对点连接。目前,这些是您可以用来执行此操作的唯一选项,因为 WebSockets 只会连接到服务器。

由于大多数手机不支持 Flash(只有 Android < 4.0 支持),所以只能使用 WebRTC。但 WebRTC 目前仅在 Chrome Beta 上可用,因此您仍将拥有一个无法在大多数平台/设备上运行的跨平台应用程序。

您必须通过服务器(WebSockets 或 HTTP)来增加可以覆盖的设备数量。

于 2013-07-31T22:47:34.273 回答