Будет ли socket.io ответом на это? Могу ли я просто использовать socket.io с nodejs для создания сервера и отправки событий для запроса моей базы данных и возврата результатов для отображения? Тогда на стороне клиента просто есть функция, которая вызывает скрипт сокета сервера, как каждую секунду? Будет ли это правильный путь к использованию socket.io? Если это так, будет ли проблема с этим процессом, если я запускаю его каждую секунду в отношении ресурсов сервера?
Если вы хотите что-то в реальном времени. Структура может быть другой.
Сначала вам нужен посредник, который поможет вам общаться между браузером и сервером.
Решение 1. Запросите каждые 30 секунд, чтобы получить в режиме реального времени (То же, что ваш текущий метод)
Решение 2: http Streaming. После того, как запрос сделал на сервер. Сервер может продолжить отправку ответа в браузер. Из-за многих проблем с безопасностью браузера, socket.io родился. Socket.io предоставляет множество методов потоковой передачи, поток htmlfile, запрос xhr, flash ...
Во-вторых, вам нужен сервер, чтобы принять соединение и провести длительный опрос сервисов. Слава Богу ! socket.io сделал эту часть для вас.
В-третьих, самый важный человек! Это данные.
Решение 1: Каждый запрос / триггер Call базы данных db или nosql (SQLserver, mysql, Mongodb). Поверь мне ! Твой ДБ скоро умрет.
Решение 2: Службы обмена сообщениями. Такие услуги, как Redis pub / sub, rabbitQ. Он просто использует подписку и публикует сообщение в очереди. Он использует определенный протокол для публикации сообщений, и они не хранят сообщения, такие как БД. Таким образом, его можно отправить сообщение> 100 000 запросов / секунд! Супер быстро. Вау! Это использование этих услуг может быть решено в режиме реального времени? К сожалению, это немного сложно. Зачем ? Поскольку использовать этот вид услуг вы не можете хранить данные, запрос SQL для настройки ваших данных нужно.
Решение 3: Процесс в памяти. Redis, memcached. Память супер быстрая! Вы можете сохранить свои окончательные результаты отображения в памяти. Память может достигать> 100 тыс. Запросов / сек.
Заключение. Создать действительно веб-приложение в реальном времени, например, Facebook или твитер. Нам нужно применить все решения выше + немного читов. Пример, уведомление о фэйсбуке. Когда вы получаете обновление новостей о друзьях, оно использует службы обмена сообщениями, чтобы публиковать оповещения для всех друзей (не более 5000 человек). Потому что интенсивная публикация замедлит работу сообщений. После этого кеша (Memcached) появляется уведомление о сокращении вызова дб (mysql). Как насчет того, чтобы мы могли получить групповое сообщение с более чем 1 миллионом человек? Конечно, мы публикуем более 1 миллиона человек. Но мы просим 1 миллион человек позвонить нашим последним групповым сообщениям, которые хранятся в памяти.
- Напоминание: масштабирование вашего сервера важно для достижения цели в реальном времени. Удачи !