PHP-реализация WebSockets

3ap

Новичок
Здравствуйте, написал небольшой скрипт для работы с WebSockets относительно скриптов в паблике.
По идее должно работать отлично, но всё не так, как хотелось бы :(
Когда я отправляю данные из браузера (подопытный Google Chrome 18) на сервер, то php-демон должен писать мне эти данные в терминал. Однако, вместо данных присылаются непонятные рандомные символы. Расскажите пожалуйста, каким образом их нужно дешифровать или же исправьте мой код, пожалуйста.
Спасибо заранее.

client.html
server.php
 

fixxxer

К.О.
Партнер клуба
Вряд ли кто-то будет отлаживать твой код.

Возьми рабочую reference implementation (гуглится за минуту) и сравнивай.
 

3ap

Новичок
Эх, если бы я нашёл хоть что-нибудь работоспособное..
Все opensource-проекты работают на старых стандартах, и, соответственно, не работают на последних версиях браузеров.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
cDLEON почему? демоны на php работают.
писать их в промышленных масштабах неэффективно, а написать один маленький демон лучше на php, чем учить для этого python или java или чем писать часть приложения на другом языке
 

fixxxer

К.О.
Партнер клуба
да все прекрасно работает. у меня аптайм демона вот равен аптайму сервера )
 

WMix

герр M:)ller
Партнер клуба
прошу прощения господа, если я вдруг не в теме, давненько не заходил к вам...
вдруг захотелось пообсчаться...

да phpdemon совсем неплохой механизм для написания демона, конечно питоном или тойже джавой все это пишется удобнее... но да не задача... сервер грузить нехочется, никаких ораклов упаси бох... конечно вопрос в вебе я или в локалке остается актуальным,.. но может еще не умер простой cron?

кинул мессадж в базу, раз в минуту стартует скрипт который работает одну минуту, читает базу и запускает паралельно клоны с индификатором мессаджа...

незнаю, возможно это и примитивно, но както опыт подсказывает, что пыхапы он другой, он одноразовый,.. это другой демон...

хотелось бы услышать отзывы...
 

cDLEON

Онанист РНРСlub
cDLEON почему? демоны на php работают.
писать их в промышленных масштабах неэффективно, а написать один маленький демон лучше на php, чем учить для этого python или java или чем писать часть приложения на другом языке
У меня язык не поворачивается назвать веб-сервер на PHP маленьким демоном :)
 

German129873

Новичок
Здравствуйте, написал небольшой скрипт для работы с WebSockets относительно скриптов в паблике.
По идее должно работать отлично, но всё не так, как хотелось бы :(
Когда я отправляю данные из браузера (подопытный Google Chrome 18) на сервер, то php-демон должен писать мне эти данные в терминал. Однако, вместо данных присылаются непонятные рандомные символы. Расскажите пожалуйста, каким образом их нужно дешифровать или же исправьте мой код, пожалуйста.
Спасибо заранее.

client.html
server.php
Здравствуйте.
Я поднял похожую тему здесь. Дело в том, что с браузера серверу приходят фреймы, содержащие случайную маску, и сообщение, "закрытое" этой маской. В моём исходнике функция websock_decode "извлекает" отправленное браузером сообщение из полученного сервером фрейма. А вот с тем, чтобы отправить сообщение с сервера браузеру - у меня проблема... Подскажите, пожалуйста, если вы уже разобрались...
 

RW1R

Новичок
Добрый вечер всем сочувстствующим! Помогите кто чем может...)
Пишу наипростейший веб-сокет сервер - http://pastebin.com/rKRBDn6x Проблема таже, что и здесь описывается - после отправки браузером данных веб сервер принимает их и выводит на экран (бывает частично, бывает непонятными символами). Помогите разобраться в чем косяк, кроме кривых рук?!
 

fixxxer

К.О.
Партнер клуба
В том, что ты, видимо, полагаешь, что fread из сокета вернет тебе столько байт, сколько ты запросил.
Это не так. Он вернет столько, сколько на данный момент доступно, если доступно хоть что-то - хоть 1 байт.

А вообще ты занимаешься написанием тормозного велосипеда с квадратными колесами.
http://socketo.me/ - возьми и не мучайся.
 

RW1R

Новичок
Спасибо за ответ! Не первый раз слышу эту фразу) Просто хочется сделать свой велосипед, хоть и тормознутый) Спасибо за пример! Но все же... как правильно получать данные из вебклиента, если не через fread?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
проблема с socketo.me в том, что логотип wamp оттуда надо убрать. но сам рашет приятный
 

RW1R

Новичок
Подскажите, пытаюсь принять данные функцией socket_recv, но она возвращает Warnint: socket_recv(): supplied resource is not a valid Socket resource in ...
foreach($connects as $key => $client)
{
if(in_array($client, $read))
{
//----здесь Warning!!----
$input = socket_recv($client, $buffer, 2048, 0); // ругается Warning: socket_recv(): supplied resource is not a valid Socket resource in ...
//-------------------------------------

/*if($buffer !== false )
{
$buffer = trim($buffer);
echo "Message: ".websock_decode($buffer)."\r\n";
}
unset($buffer);*/

}
}

какой указатель на соккет необходим функции? Вроде бы вот здесь принимается новое соединение, производится Хэндшейк, далее это соединение (указатель на соккет) добавляется в массив:

if (($connect = stream_socket_accept($socket, -1)))
{
if ($info = handshake($connect))
{
$connects[] = $connect;//добавляем его в список необходимых для обработки
echo $connect."\r\n";
echo "Принято подключение (". count($connects) .")\r\n";
}
}
 
Сверху