Я ищу способ передачи данных с сервера клиенту. Например, у меня есть два клиента и сервер. Клиент A обновляет, обновляет сервер, теперь я хочу, чтобы сервер подталкивал это обновление другому клиенту B.Сервер для взаимодействия с несколькими клиентами
Вот три варианта, которые я могу придумать.
1) Держите соединение открытым все время от клиента к серверу.
2) Использовать UDP-пакеты (возможно, здесь может возникнуть проблема с nat traversal) 3) Попросите клиента опросить сервер с высокой частотой, чтобы узнать, есть ли какие-либо изменения.
Мне не нравится вариант 1, потому что я чувствую, что есть много и много клиентов, тогда у нас могут закончиться порты tcp? # 2 кажется, что у нас может быть проблема с NAT, то есть клиент должен будет убедиться, что порт открыт, я думаю, что клиент мог бы использовать UPnP для этого, но тогда мне пришлось бы писать дополнительный код, чтобы убедиться, что я получил все пакеты необходимо. # 3 просто кажется, что на самом деле это не действительно реальное время, и открытие и закрытие соединения все время просто кажется грязным.
Есть ли другие рекомендации там? Как Dropbox обрабатывает этот или Exchange-сервер?
Если вам действительно нужно «в режиме реального времени», почему вы сравнивая его с DropBox и Exchange Server, которые, безусловно, не работают в режиме реального времени? Или вы просто злоупотребляете «в реальном времени»? – EJP
Возможно, я ошибаюсь в режиме реального времени. Таким образом, с Dropbox вы добавляете файл на один компьютер, и кажется, что он мгновенно появляется на другой машине. Мне любопытно на стороне клиента B, как правильно это сделать. –
«В режиме реального времени» в вычислениях подразумеваются конкретные ограничения времени *. * – EJP