Как реализована система диалогов VK?

216
25 июня 2018, 01:40

По какому принципу ВК идет получение сообщения? Допустим отправить легко - написать сообщение, через ajax добавить в БД, а как в этот момент сделать, чтобы другому пользователю пришло это сообщение, не обновляя страницу? Есть ли возможность сделать такое не с помощью интервала, а именно тогда, когда сообщение добавляется в БД? Если не сложно, прикрепите пример, пожалуйста :)

Answer 1

По-хорошему, в современности, такое надо бы реализовывать с помощью WebSockets. Но во Вконтакте сделано иначе, еще со старых времен, когда вебсокеты были не такими удобными.

У них сделано так, что яваскрипт делает запрос на сервер, а сервер "зависает", в цикле проверяя наличие новых сообщений. Если сообщение появляется, сервер "развисает" и возвращает ответ. Благодаря этому нет временной задержки между отправкой сообщения и его получением (кроме, естественно, неизбежных сетевых задержек).

Если же новых сообщений не поступало в течение какого-то времени (20 секунд кажется), то скрипт тоже делает возврат, после чего яваскрипт тут же делает новый запрос, и все повторяется.

Answer 2

Ну обычно реализуются на веб-сокетах, я думаю гугл больше даст примеров и информации по этому поводу чем я :)

https://github.com/morozovsk/websocket - тут и примеры и ссылки на забровские топики где описано как куда и что.

READ ALSO
Ошибка php Use of undefined constant

Ошибка php Use of undefined constant

Ребят помогите пожалуйста ошибку выдает)))

218
Retrofit android

Retrofit android

У меня есть два вопроса которые я не понял в этой библиотекепервый вопрос

232
Передача данных между PHP и Java

Передача данных между PHP и Java

интересуют способы передачи данных между PHP и приложением написанным на JavaЕсли точнее то необходимо чтобы данные с сайта, передавались в работающее...

226
Как проверить на дубль в Symfony 4?

Как проверить на дубль в Symfony 4?

В laravel есть метод чтобы можно было не записывать дубли:

206