2014-06-17 30 views
4

我刚刚为大客户提供了一个原型,一切都很好,但我现在很想知道我选择的解决方案/体系结构是否正确或者在项目继续进行的情况下有改进的地方。安装在同一局域网上不同设备上的iOS应用之间的通信

任务是构建两个iOS应用程序:一个运行在5个不同的iPhone上,另一个运行在2个iPad上。基本上iPhone应用程序必须将信息传递给iPad,偶尔他们也必须在彼此之间发送信息(iPhone到iPhone)。所有的信息都是小的JSON对象/块,其大小很小。

该应用程序不打算到达应用程序商店,是一个工作原型来测试用户测试环境中的一些想法。

我丢弃了蓝牙,因为我们正在谈论点对点通信,而不是一对一。

我所做的就是使用网络套接字感谢SocketIO,通过我的Mac上运行的小型Node.js服务器。服务器非常简单,只需接收来自客户端的消息并将信息广播到其他客户端即可。

您认为如何?我选择的解决方案好吗,还是有更好的?

例如,今天早上我刚刚发现these thread here on SO,我发现我可以使用GameKit。你怎么看?

+0

部署到应用程序商店?蓝牙有可能吗? Lan会一直可用?正在传输多大的数据?我们真的不够了解。你的解决方案听起来不错,它的工作原理和它应该是可扩展的。 – Wain

+0

thx @Wain,我已经编辑了相关信息的问题 –

回答

3

Socket.IO很不错,因为它的实现相当简单,但它的缺点是需要一个中央服务器。如果您想避免这种情况,可以使用iOS 7中引入的Multipeer连接框架。

它可让您在同一WiFi网络或蓝牙设备之间创建一对一的通信通道。一旦创建了频道,您就可以发送整个对象(或创建流,但它与您的用例似乎不相关)。

很好看的:http://nshipster.com/multipeer-connectivity/

0

我相信Bonjour是最好的解决办法:

应用程序还可以利用卓悦自动检测其他情况下,网络上的应用程序(或其他服务)的 。

但是我从来没有用过它;也许有人可以评论?

+3

您确信这是最好的选择,但您从未使用过吗?真? – Spencer

+0

@Spencer是的,我很容易被领导... – trojanfoe

+1

Bonjour只是用于发现,但之后,你需要推出自己的消息协议。 – Taum

1

我觉得socket.io是最好的选择。它建立在engine.io之上(反过来,它是建立在最快的websocket实现上的:ws)它具有最早到最新的回退,因此它从长轮询开始,然后继续前进。这保证了快速的初始连接,而不需要轮询设备的功能。你可以阅读更多关于这个here。最重要的是,它可以无缝地处理所有事情。你编写你的代码就好像连接设备支持websocket一样,如果没有,它将在幕后使用其他方法。

这篇文章详细介绍了许多可用于您的服务器的websocket库。 Which websocket library to use with Node.js?

2

从苹果的WiTap示例演示的对等网络通过Wi-Fi和蓝牙。使用Bonjour,应用程序中都宣称自己在本地网络上,并显示网络上的其他实例的列表。支持基础设施网络,对等网络蓝牙和对等网络的Wi-Fi(兼容硬件)。

我亲自测试,它工作正常,并有据可查。

相关问题