Обновление сообщений чата в приложении чата iOS - PullRequest
0 голосов
/ 17 мая 2018

В настоящее время я создаю приложение, в котором 2 пользователя будут иметь возможность общаться друг с другом.В частности, это будет приложение для iOS, использующее Swift в качестве основного языка.В большинстве учебных пособий по чат-приложениям в Интернете рекомендуется использовать Firebase, но я лично хочу использовать MySQL, поскольку остальные действия с базами данных для этого приложения выполняются с использованием MySQL.Я также не хочу использовать какие-либо существующие библиотеки и хочу делать все это самостоятельно.

У меня есть только вопросы относительно эффективности использования MySQL.При доступе к базе данных я создаю URLSession, используя swift, который затем использует предварительно определенную ссылку, которая указывает на мои PHP-скрипты на сервере для обработки доступа к базе данных.Единственная проблема заключается в том, что функция чата моего приложения должна обновлять сообщения (чтобы увидеть сообщения, которые другой пользователь отправил вам в течение секунды или около того).Я запутался, как это сделать.Моя текущая идея состоит в том, чтобы иметь Timer, который вызывает задачу данных URLSession каждую секунду или около того, чтобы получать новые сообщения из базы данных, а затем отображать их на экране пользователя.Будет ли это эффективным или есть лучший способ сделать это?Я чувствую, как будто это каким-то образом затормозит MySQL и замедлит эффективность базы данных.Есть ли лучший способ сделать это?

Заранее спасибо.

1 Ответ

0 голосов
/ 17 мая 2018

Если вы действительно хотите использовать MYSQL в качестве способа доставки сообщений, тогда вы можете посмотреть комментарий @ TekShock об использовании PushNotifications от Apple. Вы также можете использовать Long Polling , но это совсем не выгодно.

Лично я бы не использовал MYSQL как способ доставки сообщений только потому, что есть намного лучшие варианты. Вы можете выбирать из протоколов обмена сообщениями, таких как XMPP и MQTT для доставки ваших сообщений. Я лично использовал MQTT в прошлом и думал, что это было действительно просто, чтобы получить представление и будет соответствовать вашим потребностям отлично. У него есть пара действительно хороших быстрых клиентов, таких как SwiftMQTT . Каждое устройство будет подписываться и публиковаться в комнате, чтобы оно могло получать и отправлять сообщения. Таким образом, в вашем случае вы можете иметь User A подписку на ROOM 1 и User B подписку на одну и ту же комнату, и они оба получат все сообщения, опубликованные в этой конкретной комнате.

Затем вы можете сохранить доставленные сообщения в базе данных MYSQL, чтобы, когда пользователь открывает резервную копию приложения, вы могли загрузить все свои предыдущие сообщения. Вы также можете использовать Sqlite или Realm для локального хранения этих сообщений вместо хранения в сети.

РЕДАКТИРОВАТЬ:

Масштабирование также довольно просто с MQTT, если вы подумаете об этом. Вы можете разместить систему очередей между вашим приложением и MQTT-брокером, возможно, что-то вроде Apache Kafka, которая будет вашим лучшим выбором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...