C http сервер программирования - PullRequest
3 голосов
/ 10 февраля 2012

Я пытаюсь отправить данные с сервера прямо на веб-страницу php клиента.Я много раз гуглял этот вопрос и не хочу использовать движки ajax push или другие вещи, такие как cometD (если вы знаете, о чем я говорю).Я хотел бы знать, есть ли какой-либо способ установить программу на моем сервере, которая будет отправлять данные всем подключенным клиентам.я бы предпочел, чтобы это было сделано на c или c ++ или c #, я могу запрограммировать это сам, я просто хочу, если это возможно и как.

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

Возможно, вы не понимаете, как работает протокол HTTP.Вы должны документировать себя больше об этом в первую очередь.Я попытаюсь объяснить, как использовать его для вашего случая:

  • Опрос : Каждые X секунд клиент будет запрашивать веб-страницу с требуемым содержимым.Это стандартный способ использования HTTP: клиент отправляет GET, сервер отправляет ответ.

  • Push : каждый клиент запрашивает веб-страницу, но серверна самом деле ждать вас для отправки сообщения.Вы можете использовать этот канал http, чтобы «протолкнуть» данные: клиент отправляет GET, сервер ждет, пока у него будет ответ на отправку

Я не говорю о какой-либо языковой реализации, просто о том, как протокол HTTP может отклоняться, чтобы делать то, что вы хотите.Плохая сторона подхода Push заключается в том, что у вас будут X-сокеты, открытые для X-клиентов, даже когда клиент простаивает.Это не происходит с подходом Pull, сокет закрывается при отправке ответа.

Теперь, если вы хотите это сделать, вам нужно установить соединение с Клиента.Здесь часть «Ajax» может быть полезна, давайте посмотрим в jquery:

$.get('/wait_for_message', function(data) {
    alert('My server send:' + data);
})

Ваш сервер получит запрос GET /wait_for_message HTTP/1.1.Вместо того, чтобы отправлять данные обратно, вы можете сохранить этот сокет в списке «клиента, который чего-то ждет».Затем, при желании, вы можете перебирать этот список, записывать данные во все сокеты и таду: все клиенты будут получать данные.

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

0 голосов
/ 11 февраля 2012

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

...