Подтвердить что ты не робот

Push Notifications или Socket.io?, или Both?

Я разрабатываю чат-систему для Интернета, Android и iOS. Выполняя свое исследование, я обнаружил различия в том, как GCM и APNS обрабатывают Push-уведомления.

Если я отправлю Push-уведомление на устройство Android через GCM, устройство сможет решить, уведомляет ли он об этом пользователя или, если это не требуется, оно не сообщает пользователю. Это может быть просто обновление данных, которые пользователю не нужно уведомлять. С другой стороны, если я отправлю Push-уведомление на устройство iOS через APNS, устройство не сможет решить, показывать или не уведомлять, уведомление должно быть показано. Кроме того, когда устройство iOS получает уведомление, данные уведомления должны содержать строку, которая будет показана пользователю. На Android устройство может сгенерировать эту строку.

Итак, я хотел создать систему, которая работает одинаково для iOS и Android, а также для веб-сайта (на основе API). Вот когда я нашел Socket.io. Socket.io дает мне свободу отправлять данные на устройство (независимо от его iOS или Android), так что устройство решает, показывать или нет сделанные изменения (может быть обновление пользователя, новое сообщение, приглашение, или многие другие "события" ). Но, выполняя мои исследования, я обнаружил некоторые недостатки в использовании Socket.io. Устройство должно быть подключено к сокету так, чтобы информация передавалась между клиентом и сервером, но смартфон в реальном мире постоянно подключается и отключается в разных сетях и нарушает соединение сокета. Кроме того, открыв соединение, на заднем плане есть пинг-понг между сервером и клиентом, чтобы проверить, что соединение все еще открыто, и что в конечном итоге потребляет мега-ресурсы (в моей стране мы платим за каждую мега, которую мы используем, у нас еще нет фиксированной ставки), а также жизнь в лайте. Я не знаю точно, является ли это потребление значительным или нет.

На веб-странице он должен работать с Socket.io, поэтому это не проблема.

Наконец, зная плюсы и минусы обеих альтернатив, я обнаружил, что могу комбинировать оба варианта, и это может оказаться лучшим вариантом. Например, когда приложение открыто, оно использует Socket.io, а при закрытии использует APNS или GCM (в зависимости от ОС устройства). Но, это хорошая практика? Или будет лучше придерживаться только 1 решения вместо того, чтобы смешивать оба и почему?

Спасибо LOT за то, что уделили вам время на чтение и даже больше за ответ.

4b9b3361

Ответ 1

Вы точно указали плюсы и минусы. Использование обоих даст вам больше работы с точки зрения обслуживания, а также с большей сложностью, но даст вам гибкость, которой вы пользуетесь. Он будет соответствовать вашим требованиям.

Также вы, вероятно, обнаружите, что наличие соединения socket.io, открытого в фоновом процессе iOS, будет проблематичным. iOS гораздо более ограничительна тем, какие задачи могут выполняться в фоновом режиме, чем Android.