Сохранение сокета открытым в приложении Swift для чата

У меня есть работающий чат-сервер в Php / Ratchet. я использую Starscream как мой клиент в Swift. Я успешно создал чат между пользователями, однако это работает только тогда, когда мое приложение открыто, потому что это когда сокет открыт. Как заставить мое приложение получать сообщения, даже если мое приложение не включено. Так что в основном есть способ держать розетки открытыми. Я где-то читал, что это запрещено Apple.

1

Решение

Похоже, вы отправляете сообщения с вашего клиента на телефон. Вам нужно отправлять сообщения на сервер, а сервер отправляет их на ваш телефон.

Если сервер не может успешно отправить сообщение на ваш телефон, он должен сохранить это сообщение и отправить сохраненные сообщения на телефон, когда он будет доступен.

Существуют системы очередей сообщений для подобных вещей. Смотрите, например, RabbitMQ. Также есть множество других, которые могут лучше работать с вашим технологическим стеком. Провести исследования.

Здесь клиент общается с сервером, сервер соединяется с RabbitMQ или любым другим средством, которое вы выбираете, RabbitMQ отслеживает сообщения в очереди, а когда телефон подключается к сети, RabbitMQ отправляет сообщения в очередь на сервер, а сервер отправляет их на сервер. Телефон.

PS Google «Очередь сообщений PHP».

1

Другие решения

Существует высокая вероятность того, что ваш процесс в какой-то момент будет остановлен системой, поэтому я бы не стал полагать, что приложение будет активным в фоновом режиме.

  1. Попробуйте найти решение для получения прошлых сообщений, когда клиент станет онлайн.
  2. Прочитать о Служба Apple Push Notification уведомлять пользователей о сообщениях, когда приложение не активно.
2

По вопросам рекламы [email protected]