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

  • Автор темы Автор темы 3ap
  • Дата начала Дата начала

3ap

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

client.html
server.php
 
Вряд ли кто-то будет отлаживать твой код.

Возьми рабочую reference implementation (гуглится за минуту) и сравнивай.
 
Эх, если бы я нашёл хоть что-нибудь работоспособное..
Все opensource-проекты работают на старых стандартах, и, соответственно, не работают на последних версиях браузеров.
 
cDLEON почему? демоны на php работают.
писать их в промышленных масштабах неэффективно, а написать один маленький демон лучше на php, чем учить для этого python или java или чем писать часть приложения на другом языке
 
да все прекрасно работает. у меня аптайм демона вот равен аптайму сервера )
 
прошу прощения господа, если я вдруг не в теме, давненько не заходил к вам...
вдруг захотелось пообсчаться...

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

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

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

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

client.html
server.php

Здравствуйте.
Я поднял похожую тему здесь. Дело в том, что с браузера серверу приходят фреймы, содержащие случайную маску, и сообщение, "закрытое" этой маской. В моём исходнике функция websock_decode "извлекает" отправленное браузером сообщение из полученного сервером фрейма. А вот с тем, чтобы отправить сообщение с сервера браузеру - у меня проблема... Подскажите, пожалуйста, если вы уже разобрались...
 
Добрый вечер всем сочувстствующим! Помогите кто чем может...)
Пишу наипростейший веб-сокет сервер - http://pastebin.com/rKRBDn6x Проблема таже, что и здесь описывается - после отправки браузером данных веб сервер принимает их и выводит на экран (бывает частично, бывает непонятными символами). Помогите разобраться в чем косяк, кроме кривых рук?!
 
В том, что ты, видимо, полагаешь, что fread из сокета вернет тебе столько байт, сколько ты запросил.
Это не так. Он вернет столько, сколько на данный момент доступно, если доступно хоть что-то - хоть 1 байт.

А вообще ты занимаешься написанием тормозного велосипеда с квадратными колесами.
http://socketo.me/ - возьми и не мучайся.
 
Спасибо за ответ! Не первый раз слышу эту фразу) Просто хочется сделать свой велосипед, хоть и тормознутый) Спасибо за пример! Но все же... как правильно получать данные из вебклиента, если не через fread?
 
проблема с socketo.me в том, что логотип wamp оттуда надо убрать. но сам рашет приятный
 
Подскажите, пытаюсь принять данные функцией 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";
}
}
 
Сверху