Как я могу установить соединение между клиентом и сервером, когда сервер отправляет новые сообщения клиенту?

Мне нужно установить соединение между клиентом и сервером через PHP веб-сокет.

Сервер должен будет проверять наличие новых сообщений с помощью внешнего API и отправлять их клиенту.

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

Клиентская сторона
Продолжаю ли я звонить на сервер через websocket каждую секунду, используя javascript setInterval() функция или я могу сделать только один звонок? Как клиент узнает, что на сервере есть новые сообщения?

Сторона сервера
Создать сценарий, который запускает бесконечный цикл, чтобы продолжать проверять с помощью API и отображать результаты?

WebSocket Как веб-сокет узнает, к какому соединению относится сообщение?

Я не уверен, если это имеет значение, но я собираюсь использовать трещотка для создания веб-сокета

3

Решение

В последние дни я решил эту проблему с помощью Comet. И я использовал Php, Node.js. Вы должны проверить кометную технологию и посмотреть php и NOde.js.

http://www.screenr.com/SNH

http://blog.jamieisaacs.com/2010/08/27/comet-with-nginx-and-jquery/

и т.п.

1

Другие решения

Сторона клиента:

Нет, ты на связи Нет опроса для выполнения. (Это главное преимущество и цель WebSockets.)

Когда сервер отправляет сообщение клиенту, клиент запускает onmessage Перезвоните.

Сторона сервера:

Да, вы можете настроить бесконечный цикл, который будет перепроверять ваш API с заданным интервалом. У вас также может быть «фиктивный» клиент WebSocket, который отправит сообщение на ваш главный WS-сервер, когда появится новая информация. Вы также можете использовать сигналы процесса. Вы также можете настроить открытый сокет между конечной точкой API, который будет уведомлять ваш сервер об обновлениях. Вы можете настроить свой API для отправки информации на ваш сервер. Есть также несколько десятков других методов получения информации из побочных каналов, и перечисление их (гораздо реже вдаваясь в детали одного из методов) выходит далеко за рамки этого вопроса.

Изучение, понимание преимуществ и ограничений каждого метода и внедрение наилучшего метода — вот почему вам платят большие деньги, и вас считают экспертом в данной области.

Как сервер WS знает, какой клиент подключен

В сокетах PHP используется дескриптор — непрозрачное значение, которое в PHP является целым числом, но никогда не должно рассматриваться как что-либо, кроме указателя, указывающего, куда отправлять сообщения. Пока ваше приложение отслеживает это значение (и я считаю, что в этом отношении Ratchet выполняет некоторые тяжелые действия), и оно остается связанным с вашим пользовательским объектом, вы должны быть хороши.

0

По вопросам рекламы [email protected]