iOS应用程序之间的通信安装在同一LAN上的不同设备上

时间:2014-06-17 09:29:13

标签: ios sockets

我刚刚为一个大客户提供了一个原型,一切都很好,但我现在很想知道我选择的解决方案/架构是否是正确的,或者如果项目将继续保留,还有改进的地方

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

该应用程序无意进入应用程序商店,是一个在用户测试环境中测试一些想法的工作原型。

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

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

你怎么看?我选择的解决方案是否正常,还是有更好的解决方案?

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

4 个答案:

答案 0 :(得分:3)

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

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

好读:http://nshipster.com/multipeer-connectivity/

答案 1 :(得分:2)

来自Apple的WiTap示例演示了通过Wi-Fi和蓝牙进行的点对点网络连接。使用Bonjour,应用程序都在本地网络上进行通告,并在网络上显示其他实例的列表。支持基础设施网络,点对点蓝牙和点对点Wi-Fi(在兼容硬件上)。

我亲自对它进行了测试,它运行良好并且记录良好。

答案 2 :(得分:1)

我认为socket.io是最好的选择。它建立在engine.io之上(反过来建立在最快的websocket实现上:ws)它具有最旧到最新的后备,因此它从长轮询开始并逐步完成。这保证了快速初始连接,而不需要轮询设备的功能。您可以阅读有关此here的更多信息。最重要的是,它可以无缝地处理所有事情。您编写代码就好像连接设备支持websockets一样,如果没有,它将在幕后使用其他方法。

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

答案 3 :(得分:0)

我确信Bonjour是最好的解决方案:

  

应用还可以利用Bonjour自动检测其他实例   网络上的应用程序(或其他服务)。

但我自己从未使用过它;也许有人可以评论?