Обычно подобный функционал используется протокол WebSockets: это tcp/ip-подключения, которые не закрываются после получения ответа от сервера, плюс, они формируют двухсторонний канал связи между клиентом и сервером, то есть, сервер сам может инициировать передачу данных клиенту, в отличие от обычного http.
Подробнее про WS
1. Используйте то, что знаете. Но NodeJS лучше в данном случае, так как потребуется поддерживать массу подключений.
Вот наиболее популярная библиотека для работы с веб-сокетами
2. Зависит от реальной сложной задачи (из описания не очень ясно). Но +- задача тривиальная
3. Да, для решения данной задачи можно освоить довольно быстро