Написал на РНР клиент и сервер(по примеру в нете). Сервер висит как процесс и слушает порт. Реализация по средством сокетов. Клиент коннектиться. Но что бы, вывести данные в браузер, нужно завершить работу РНР скрипта клиента. В цикле он не выводит данные висит белым окном, пока не завершит работу. И для этого нужно разорвать соединение с сервером. Но серверу тоже нужно клиенту данные отправлять, а соединения уже нет. То есть не получаться постоянного коннекта. Вообще такое можно реализовать, что был постоянный коннект?
мочь то можно ... но вот предпосылок для этого нет сам протокол HTTP для этого не предназначен (keep-alive - это для другого) данный протокол сессионый по сути, и предназначен для предачи конечного размера данных. для подобного постоянного соединения ни сервер (Апач), ни браузер пользователя - не предназначены! если очень хочется то можно рассмотреть связку flush();ob_flush(); - но настоятельно советую рассмотреть технологию AJAX
AJAX я рассматриваю. Суть тут в том что бы понять что можно а что нельзя. 1. Как я и говорил, просто понять а вообще такое возможно на PHP или нет. 2. Ещё мне очень интересно как реализован чат Бородина. РНР я знаю. О написании сервера на TCL тоже имею представление. Но вот как они связаны понять не могу. И как я понимаю Бородин не использует сокеты. Может кто то об этом знает.
технологии постоянных соединений ?? для этого не стоит использовать протокол хттп .. а значит и пхп неподходит! да и браузер в качестве клиента тоже неахти!
PHP может просто в цикле слушать порт, а браузер периодически его спрашивать на AJAX - и всё будет в ажуре. А постоянное соединение может обеспечить Flash. Да, скрипт придётся запускать из командной строки - т.е. он по сути будет сам себе WEB сервер. Принимайте коннекции на WEB сервер и реврайтом перенаправляйте на другой порт вашему скрипту. идею я вам подал, дальше мануал и гугль.
Вот это зло!!! Суть в том что бы соединение с браузером устанавливалось 1 раз, а сервер потом (не зависимо от браузера) будет посылать данные по мере их поступления. А не браузер спрашивать. Вот. Вообщем то главный вопрос это в том как реализован чат Бородина. Тоесть как он реализован знаю, а как происходит процес передачи данных. Скорее всего по сокетам, но работы с сокетами я в исходном коде не нашел.
хм. помоему сервер tcl хранит последние 50 сообщений в памяти. браузер подключается средствами аякса к скрипту на сервере, который запрашивает N сообщений из памяти tcl сервера. выводит их в браузере. закрывает соединение. через 5 секунд начинается занова: подключение к скрипту на сервере...запрос сообщений время которых выше чем полученное последним сообщение..
Вот цитата из описания чата: "Данный чат состоит из 2х частей: 1 - PHP-скрипты, 2 - чат-сервер (программа для серверной части). Эта программа держит коннекты и отсылает в них сообщения, как только они приходят. Все остальное - делают скрипты на PHP". Ни о каком AJAX речи не идет.