刷新iOS聊天应用程序中的聊天消息



我目前正在创建一个应用程序,其中 2 个用户可以相互聊天。 具体来说,它将是一个使用Swift作为主要语言的iOS应用程序。 网络上的大多数聊天应用程序教程都建议使用 Firebase,但我个人想使用 MySQL,因为我的其余数据库活动都是使用 MySQL 完成的。我也不想使用任何现有的库,并希望自己完成这一切。

我只对使用 MySQL 的效率有疑问。 访问数据库时,我使用 swift 创建一个 URLSession,然后使用指向后端 PHP 脚本的预定链接来处理数据库访问。 唯一的问题是我的应用程序聊天功能必须刷新消息(以查看其他用户在一秒钟左右发送给您的消息)。 我很困惑该如何去做。 我目前的想法是有一个计时器,它每秒左右调用一次URLSession数据任务,从数据库中检索新消息,然后将它们显示在用户的屏幕上。 这会有效还是有更好的方法? 我觉得这会以某种方式使MySQL陷入困境,并且最终会降低数据库的效率。 有没有更好的方法可以解决这个问题?

提前谢谢。

如果你真的想使用MYSQL作为传递消息的一种方式,那么你可以看看@TekShock关于使用ApplePushNotifications的评论。您也可以使用长轮询,但它根本不有利。

我个人不会仅仅因为有更多更好的选择而使用 MYSQL 作为传递消息的一种方式。您可以从XMPPMQTT等消息传递协议中进行选择,以传递消息。我个人过去使用过MQTT,并认为它非常简单,可以完美地满足您的需求。它有几个非常好的 swift 客户端,比如 SwiftMQTT。您将让每个设备订阅并发布到一个房间,以便它可以接收和发送消息。因此,在您的情况下,您可以让一个User A订阅ROOM 1和一个User B订阅同一个房间,他们都将收到发布到该特定房间的所有消息。

然后,如果您想将传递的消息存储到 MYSQL 数据库,以便当用户打开应用程序备份时,您可以加载他们之前的所有消息。您还可以使用SqliteRealm在本地存储这些消息,而不是在线存储这些消息。

编辑:

缩放也非常简单,MQTT这是您要考虑的事情。您可以在应用程序和MQTT代理之间放置一个队列系统,可能是像Apache Kafka这样的东西,这将是您最好的选择。

最新更新