在ios聊天应用程序中刷新聊天消息

mspsb9vt  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(422)

我目前正在创建一个应用程序,其中2个用户将有能力与对方聊天。具体来说,它将是一款以swift为主要语言的ios应用程序。网上大多数聊天应用程序教程都推荐使用firebase,但我个人希望使用mysql,因为我为这个应用程序进行的其他数据库活动都是使用mysql完成的。我也不想使用任何现有的库,我想自己做这一切。
我只对使用mysql的效率有疑问。访问数据库时,我使用swift创建一个urlsession,然后使用一个指向后端php脚本的预定链接来处理数据库访问。唯一的问题是,我的聊天功能的应用程序将不得不刷新消息(看到消息,其他用户已发送给你在一秒钟左右)。我不知道该怎么办。我目前的想法是有一个计时器,每隔一秒左右调用urlsession data任务,从数据库中检索新消息,然后在用户屏幕上显示它们。这是有效的还是有更好的方法?我觉得这会在某种程度上阻碍mysql的发展,从而降低数据库的效率。有没有更好的办法?
提前谢谢。

pzfprimi

pzfprimi1#

如果你真的想用mysql来传递信息,那么你可以看看@tekshock关于使用苹果的 PushNotifications . 你也可以使用长轮询,但这是不有利的。
我个人不会仅仅因为有更多更好的选择就用mysql来传递消息。您可以从以下消息传递协议中选择 XMPP 以及 MQTT 传递你的信息。我个人用过 MQTT 在过去,我认为这是非常简单的获得挂起,将符合您的需求完美。它有几个非常好的swift客户,比如swiftmqtt。您将让每个设备订阅并发布到一个房间,以便它可以接收和发送消息。所以在你的情况下,你可以有一个 User A 订阅 ROOM 1 和一个 User B 订阅同一个聊天室,他们都将收到发布到该特定聊天室的所有消息。
如果您想将传递的消息存储到mysql数据库,那么当用户打开应用程序备份时,您可以加载他们以前的所有消息。你也可以使用 Sqlite 或者 Realm 将这些消息存储在本地而不是在线存储。
编辑:
缩放也非常简单 MQTT 如果这是你会考虑的事情。您可以在应用程序和mqtt代理之间放置一个队列系统,可能类似于apachekafka,这是您的最佳选择。

相关问题