使用Socket.IO和MySQL和Node.js在iOS Swift 4中进行实时更新

在线上的许多示例演示了实时聊天室的强大功能。 虽然这是Socket.IO的绝佳应用程序,但是当通过API更改数据时,我们也可以使用Socket.IO来向Web或移动应用程序发出信号以进行更新。 如果您正在寻找一种使用关系数据库的解决方案,而该数据库不是太抽象,而是可以提供更大的灵活性,那么它可以是Realm或Firebase之类的绝佳选择。

在此示例中,我们将开发一个简单的iOS Swift 4应用程序,当通过简单的API在我们的关系数据库中更改数据时,该通知将得到通知。 可以在这里找到所有服务器和iOS代码: https//github.com/smifsud/realtime

这些是我们将要执行的步骤:

  • 创建带有一些示例内容的本地Node和MySQL服务器。
  • 在Node.js中创建一个简单的API,该API将接受用户标识符(令牌)并返回关联的数据
  • 通过存储在数组中*捕获服务器上的客户端令牌和套接字ID *
  • 更新表API。 当发生任何变化时。 属于该新闻组的所有已连接令牌将通过带有唯一名称空间(令牌),socketID和事件名称的消息发出通知
  • iOS更新。 捕获事件并更新应用。

在我们的假设应用程序中,有新闻组,某些用户可以访问其中包含来自不同新闻媒体的标题的新闻组。 在我们的iOS应用中,我们将有一个包含相关标题的UITableView。 通过我们的简单API进行更改时,服务器端功能将检查服务器以查找与更改后的数据之间的关系,如果存在实时连接(socket.IO连接),服务器将向该特定对象发出事件客户端连接和与用户ID关联的用户令牌。

*在我们的示例中,我们将要注意套接字ID。 我发现许多教程都没有提到这一点,但是应该考虑到这一点。 例如,当使用诸如socket.on Any之类的命令时,即使没有订阅特定的应用程序,应用程序仍然可以拾取通过网络发出的消息。 除了指定名称空间之外,我们还希望指定套接字的IO ID ,以便在调用过程中有效地发送一条消息,并确保并非每个客户端在传输可能会传输的任何活动期间都收到ping。与我们的特定用户无关。