我正在寻找以下场景的最佳实践:
移动设备 (iOS) 通过 Internet 将其(传感器)数据实时发送到另一台设备(iPad、笔记本电脑、PC 等) 。
当然,我需要一个网络服务,但据我所知,网络服务被“调用”并返回数据或获取数据。但我需要在两个设备之间几乎实时地不断交换传感器数据。我正在寻找实现多人在线游戏之类的东西,他们是如何做到的?还是 Glympse 服务?
我正在寻找以下场景的最佳实践:
移动设备 (iOS) 通过 Internet 将其(传感器)数据实时发送到另一台设备(iPad、笔记本电脑、PC 等) 。
当然,我需要一个网络服务,但据我所知,网络服务被“调用”并返回数据或获取数据。但我需要在两个设备之间几乎实时地不断交换传感器数据。我正在寻找实现多人在线游戏之类的东西,他们是如何做到的?还是 Glympse 服务?
“仅仅因为它被称为 GameKit 并不意味着它的用途仅限于游戏。您想通过该连接抽取的任何数据都是公平的游戏”
太对了。GameKit 这个名字用词不当,很不幸地削弱了它的重要性,这个工具包中有很多东西可以用来开发严肃的应用程序。
我处理它的方法是在网上创建一个“服务器”,它将运行一些应用程序(如 CGI 脚本)来收集数据(将其存储在数据库中) - 然后允许远程设备查询它。
这意味着每个设备都有一个他们正在连接的“知名服务”——可能是“登录”——并从中选择数据。
例如,每个“客户”可以推送他们的“船只名称”和 GPS 位置。服务器上的 CGI 脚本只会将这些放在 MySQL 数据库中 - 作为包含“船舶名称”和“位置”的简单表。
或者,客户可以查询和“拉”特定船只名称的 GPS 位置。作为简单的 CGI 脚本,它将“船舶名称”作为一个值,并将 MySQL 查询发送到数据库以返回“位置”。它可以以 XML 格式发回位置(和船只名称)。
iPhone 客户端可以使用 NSXMLParser - 甚至 JavaScript“AJAX”客户端可以使用它自己固有的 XML 解析功能来发送对一个(或多个)容器的请求,并接收结果。
您不想做的是让每个客户都必须直接与其他客户交谈。这将使您在防火墙规则方面遇到麻烦,并在您尝试扩展多对多通信时搞砸。
如果您的设备都运行 iOS,您可以为此使用 GameKit 中的点对点连接功能。这里有一个很好的问题和答案。
仅仅因为它被称为 GameKit 并不意味着它的用途仅限于游戏。您想通过该连接提取的任何数据都是公平的游戏(可以这么说)。
您可以使用 XMPP 协议几乎实时地发送/接收任何 xml 数据。您需要创建聊天室,每个 XMPP 客户端(您的应用程序)只需要登录到该聊天室。发送到房间的消息将被传递到每个 XMPP 客户端。
关于协议和公共服务器的信息可以在这里找到:http: //xmpp.org/
关于 XMPP 的好书:http: //download.cnet.com/XMPP-The-Definitive-Guide/3000-20412_4-75114351.html
链接可以在这里找到免费的 iOS XMPP 库:iOS messenger SDK