3

Я работаю над чат Приложение как Telegram. Пользователь должен увидеть своего друга наличие (Online/Offline). Я много искал и узнал, что сервер должен отправить пинг устройствам и устройствам ответить назад. Но я думаю, что это не позволяет приложению эффективно использовать ресурсы сервера и устройства. Вы предполагаете, что есть миллион пользователей, много пинов в каждом интервале, много батареи устройства и использования полосы пропускания и так далее.Что такое Оптимальный подход для проверки наличия устройств с сервера

Я также изучил Firebase и GCM. Они проверяют доступность устройств для отправки им сообщений, но я не могу использовать его, чтобы показать его пользователям.

Я действительно заинтересован в технологии, которую Telegram используется для доступности пользователей.

Пожалуйста, позвольте мне найти оптимальный способ.

+3

Я думаю, что [это] (https://firebase.googleblog.com/2013/06/how-to-build-presence-system.html) - именно то, что вы ищете. –

+0

@ AndréKool Спасибо, это было действительно полезно. У вас есть идея, как реализовать ее на моем собственном сервере? –

+0

Что касается вашего теперь удаленного вопроса, проверьте 'dmesg', чтобы узнать, был ли Apache убит системой из-за нехватки памяти. Вы также можете сделать 'ps aux | grep httpd', чтобы убедиться, что Apache все еще работает (я думаю, что Centos использует «httpd», а не «apache»). – halfer

ответ

2

Если вы посмотрите на the blog post @Andre linked, вы увидите, что «официальный» подход Firebase к этой проблеме заключается в сохранении значения в базе данных реального времени Firebase, которая указывает статус пользователя. Таким образом, логика такова:

  • использовать свойство в базе данных для отслеживания состояния пользователя (например,/пользователей/{UID}/статус)
  • , когда пользователь входит в вас установить свой статус «онлайн»
  • Когда пользователь выходит из системы/помещает приложение в фоновый режим/в режиме ожидания, вы изменяете значение этого свойства «статус» (например, «автономно») (используйте метод .onDisconnect(), как показано в сообщении блога)

Теперь, когда вы извлекаете значение этого статуса, он всегда будет отображать онлайн-статус пользователя в автономном режиме, не полагаясь на o n пользователь фактически находится в сети в то время.

Если вы хотите показать пользователю статус всех своих друзей, вы просто просматриваете список своих друзей uid и получаете соответствующий статус для каждого. Вся информация/код, кажется, in that blog post.

+0

О, спасибо @James; есть ли какой-либо общий подход, который я могу использовать, который не зависит от Firebase? Я имею в виду, что могу использовать его на своем сервере? –

+0

@MustafaMohammadi Я не уверен, что понимаю. Почему вы не хотите использовать Firebase? – James

+0

На самом деле я пытаюсь получить семьи с проблемами и решениями. Firebase - действительно отличный сервер, и все готово, и я думаю, что это делает меня ленивым. Как вы думаете? Спасибо –

Смежные вопросы