ПредишенСледващото

Сървъри FastCGI, HTTP, CGI, FlashPolicy, Telnet, MySQL клиент, Memcached, MongoDB - това е непълен списък на функционалност реализира в този демон, създаден от руски програмист Василий Зорин.

Въпреки това, ние сега се интересуват само в WebSocket, и то phpDae гуспудин твърде възможно. В процеса на инсталиране freyvorka има свои нюанси, така че се спирам на това малко по-подробно.

PhpDaemon изисква за своята работа libevent библиотека - междуплатформен библиотека за асинхронно мрежи, осигурява механизъм, който използва функция за обратно извикване. Хранилището е PECL разширение за работа с libevent чрез PHP, но за да го събере, ние може да се наложи phpize полезност на пакета от PHP-раз. Въпреки това, този факт не трябва да ни спре.

$ Sudo правоспособност инсталирате php5-Dev

Естествено е за Debian или Ubuntu потребители. Ако имате Red Hat, Fedora или CentOS, екипът ще бъде:

$ Sudo Yum инсталирате php53-раз

Ако използвате Windows ... е, като цяло, е по-добре да се сложи на виртуална машина.

Следваща инсталирате libevent на експанзия (самата библиотека би трябвало вече да е инсталиран):

PECL инсталирате libevent

След инсталирането на PHP. INI предписват следния ред, ако тя не е на разположение:

(Важно е да се направи това за CLI-преводач, който е на пътя към конфигурационния файл ще напишете: / и т.н. / php5 / CLI / PHP INI ..)

Накрая, задайте PhpDaemon:

Git Git клонинг: // GitHub. COM / kakserpom / phpdaemon. Git коригират + х phpdaemon / бен / phpd

Ln - п / ЮЕсАр / местни / phpdaemon / хамбар / phpd / ЮЕсАр / хамбар / phpd

Ln - п / ЮЕсАр / хамбар / phpd / и т.н. / първоначален. г / phpd актуализация-RC. г phpd подразбиране

Въпреки че началото на кампанията, ние със сигурност се забърза, а може би, в конзолата изпаднат няколко грешки. Това не е проблем, то се определи точно сега. На първо място, да редактирате конфигурационния файл - phpdaemon / конф / phpd. конф. Той ще трябва да изглежда по следния начин:

Потребителят корен; група корен;

ServerStatus

Привилегировани; позволи 1; слушате-порт 8080:

ExampleWebSocket

Path / ЮЕсАр / местни / ИЪ / phpdaemon / приложения / ExampleWebSocket. PHP:

Listenport 8047; потребителското WWW;

WebSocketOverCOMET

Path = / ЮЕсАр / местни / ИЪ / phpdaemon / AppResolver. PHP

Включи конф. г / * конф .:

Аз съм тук, аз няма да се спирам на подробностите phpdaemon среда конфигурация, цялата конфигурационния файл давам само за да може лесно да се използва в своите експерименти читателя. Най-важното проектирането и сървър Пример-WebSocket. Първият от тях на разстояние от уеб гнезда, а вторият прилагането тест регистър. Параметърът път се отнася до физическото му местоположение.

Много важен параметър е конфигурация линия

Path = / ЮЕсАр / местни / ИЪ / phpdaemon / AppResolver. PHP,

Показване на пътя ни към Resolv File (файл, прави разбор поискване, и ги свързва с приложението). Самият този файл ще бъде толкова просто, колкото е възможно:

Сега ние се притеснява да клиентската част. В разпределението phpdae гуспудин включва добър инструмент за тестване на технологията. В папка phpdaemon / клиентските-конекторите / WebSocket / са определени Js-файлове и примерен HTML-страници, работа с уеб контакти, изисква минимална настройка (фиг. 105). И за браузъри, които не поддържат WebSocket, изработен процес емулация използване COMET технология / Long обединяване и дори флаш. Но ние не сме много интересно, няма да търсят лесния начин и да напишете WebSocket-клиент:

Функция messageEvent (MSG)

Функция closeEvent ()

Ние работим с phpdaemon, html5 урок

Фиг. 105. Работа с WebSockets

Тук ние виждаме три бутона, първият от които създава гнездо (и по този начин установява свързване), което води до WebSocketConnection функция, която, от своя страна, създава WebSocket Object () конструктор параметър, който е наш URL-WebSocket приложение. Втори, незадължителен параметър - протокола, може да има няколко.

След установяване на връзка (ние, уведомява съответния сигнал), можете да използвате бутона за изпращане на пинг изпраща съобщение до контакта. При получаване на съобщение от сървъра работи onmessage събитие, което доведе в нашия случай, ще се появи съобщение с отговор на сървъра (фиг. 106). Ключови Затвори WebSocket затваряне на гнездото - това поле взаимодействие

Тъй като сървъра се прекратява. Изпратени или получени данни под формата на конци, но нищо не пречи на обмена и JSON-обекти:

Функция sendText () Тип: "съобщение", текст: "Здравейте WebSockets.!", Id: clientID, дата: Дата. сега ()

WS. изпратите (JSON stringify (MSG).);

Фиг. 106. чрез WebSocket

С една дума, всичко, както в обикновен клиент-сървър уеб взаимодействие. Как гръб, ние имаме, строго погледнато, не трябва да се интересуват, но нека разгледаме неговото изпълнение само за цялостното развитие.

* Наречен, когато получи нова рамка.

* Съдържание @param низ рамката.

* Тип @param число Frame се.

Обществена функция onFrame ($ данни, вида $) $ Това-> клиент-> sendFrame ( "понг", WebSocketSERVER :: STRING, функция ($ клиент)

Daemon :: дневник ( "ExampleWebSocket:" понг ". Получена от клиент");>

Първият от тях се нарича, когато уеб гнездо и се връща нова сесия с него. На второ място е реализацията на тази сесия и начин onFrame включва получаване на съобщението и изпраща отговор.

Това сега ние можем да получите на базата на съществуващия арсенал от инструменти? Да, почти всички препятствия под формата на HTTP протокол не повече. По-скоро, той HTTP е все още тук, но характеристиките на своята архитектура - вече не е пречка. Смущения в другата - слаб технология при подпомагане на браузъри, така и на уеб сървъри. Но, аз не мисля, че някой се съмнява, че това е всичко, временно. Много по-съществена изглежда по-различно, "вродена" липса на технология - без ограничения на срока на годност на поискване. Факт е, че WebSockets - е TCP сокета, а не HTTP-заявка, тя не разполага с характера на "заявка / отговор на искането" и че, в допълнение към ползите, има един недостатък - неудобството от обслужването на дейността, ограничен до една молба. Е, не е панацея, просто предприемачът трябва винаги да се има предвид това поведение при взаимодействие със сървъра.

Може би ще се интересуват от следните членове:

Подкрепете проекта - споделете линка, благодаря!