Я хотел создать веб-чат. Было предложено использовать серверы Php Socket. Я сделал один, и они хорошо работают с telnet-клиентом.
Меня сбивает с толку то, как передать эти данные клиенту через ajax (без обновления страницы).
Все, что я могу придумать, - это вызвать php-файл с помощью ajax, получить данные и обновить страницу. Но наоборот.
Или мне что-то не хватает?

Как бы вы реализовали веб-чат один на один?

0
Putr 27 Июл 2010 в 00:16

2 ответа

Лучший ответ

Одно из решений - длинный опрос. Клиент откроет AJAX-запрос скрипту, который будет блокировать и ждать поступления данных. Если в течение минуты данные не поступят, он вернется, и клиент снова откроет соединение. Если данные поступают, он немедленно вернет данные, и клиент обновит свое представление.

Для отправки данных просто выполните обычный обратный вызов AJAX.

0
Yuliy 26 Июл 2010 в 20:19

У вас есть идея инициируемой клиентом связи, которая подходит для отправки вещей от клиента на сервер.

Вследствие того, что HTTP не имеет состояния, нет возможности «протолкнуть» данные клиенту без запроса.

Чтобы обойти это, нужно всегда оставлять соединение с сервером открытым. Запрос находится на рассмотрении, и когда серверу есть что сказать, он отвечает на ожидающий запрос. Каждый раз, когда это происходит, клиент создает новый запрос, чтобы оставить сидеть до следующего раза, когда должно произойти соединение сервер-> клиент.

Еще один способ реализовать связь почти в реальном времени - это частые опросы. Но на самом деле я не рекомендую такой подход. Особенно для программы чата.

0
Borealid 26 Июл 2010 в 20:18