Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для psinetron
9 / 9 / 5
Регистрация: 24.01.2012
Сообщений: 61

PHP и webSocket

01.07.2014, 11:41. Показов 3516. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Возникла необходимость подключится к вебсокету (на Nodejs) через пхп.
Суть проблемы не большая - php подключается, отправляет данные отключается.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$fp = fsockopen('10.0.0.0', 9090, $errno, $errstr, 10);
$w="
GET /socket.io/?transport=polling HTTP/1.1\r\n
Upgrade: websocket\r\n
Connection: Upgrade\r\n
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n
Origin: test5.ru\r\n
Sec-WebSocket-Protocol: chat, superchat\r\n
Sec-WebSocket-Version: 25132\r\n\r\n
";
 
fputs($fp, $w); // отправляем данные
 
$keysid='';
while (!feof($fp)) {
    $gets=fgets($fp);
    if (preg_match('#Set-Cookie: io=([A-z0-9\-\_]*)#',$gets,$massive)){
        print '------>' .print_r($massive,true);
        $keysid=$massive[1];
    }
    echo '-->'.$gets. '<br/>';
}
получаю следующий ответ от сервера:
PHP
1
2
3
4
5
6
7
8
9
-->HTTP/1.1 200 OK
-->Content-Type: application/octet-stream
-->Content-Length: 101
-->Access-Control-Allow-Origin: *
------>Array ( [0] => Set-Cookie: io=SA1pWhRxtlELYCTTAAAG [1] => SA1pWhRxtlELYCTTAAAG ) -->Set-Cookie: io=SA1pWhRxtlELYCTTAAAG
-->Date: Tue, 01 Jul 2014 07:22:42 GMT
-->Connection: keep-alive
-->
--> �0{"sid":"SA1pWhRxtlELYCTTAAAG","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}
И вот как теперь отправить сообщение на сокет? Вообще есть ли у кого-нибудь пример для работы с socket.io на PHP?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.07.2014, 11:41
Ответы с готовыми решениями:

WebSocket на php
Добрый день. Есть JS клиент, допустим вот такой: var socket = new WebSocket(&quot;wss://wss.mydomen.com&quot;); socket.onopen = function() {...

PHP WebSocket Client
Приветствую! Пытаюсь соединиться с websocket сервером при помощи PHP, но полученные данные обрезаются, подскажите что нужно поправить? ...

Как получать информация через WebSocket на php?
Есть задача парсить транзакции с сайта blockchain.info У них для этого есть WebSocket API которое отдает по запросу инфу...

4
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
01.07.2014, 16:38
Цитата Сообщение от psinetron Посмотреть сообщение
И вот как теперь отправить сообщение на сокет?
А что, по Вашему, делает вот эта строка:
Цитата Сообщение от psinetron Посмотреть сообщение
fputs($fp, $w); // отправляем данные
? Подскажу - "отправляет сообщение на сокет". В данном случае какие-то заголовки.
1
 Аватар для psinetron
9 / 9 / 5
Регистрация: 24.01.2012
Сообщений: 61
03.07.2014, 11:50  [ТС]
pav1uxa,
Цитата Сообщение от pav1uxa Посмотреть сообщение
А что, по Вашему, делает вот эта строка:
Отправляет заголовки header'a
Цитата Сообщение от pav1uxa Посмотреть сообщение
Подскажу - "отправляет сообщение на сокет". В данном случае какие-то заголовки.
А вот тут как раз не точность. Сразу после отправки заголовков (header информации) можно пересылать сообщение. Но для socket.io, который я использую на ноде - у этого сообщения есть определенный формат.
Во первых сообщение должно передаваться в следующем виде:
PHP
1
42["message", "Сообщение"]
А во вторых шифроваться алгоритмом либо hybi 10, либо hybi 13.
По hybi 13 я ничего не нашел, а вот с hybi 10 разобрался.
Так что, если кому-то понадобится из PHP передать значения на socket.io - предоставляю простенький класс: https://github.com/psinetron/PHP_SocketIO_Client/
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
03.07.2014, 19:22
Цитата Сообщение от psinetron Посмотреть сообщение
А вот тут как раз не точность.
Да нет, все точно. Заголовки это тоже информация. Даже когда Вы заходите сюда на форум, Вашему браузеру приходят почти такие же заголовки, за которыми следует html код. За заголовками следует 2 переноса строки, благодаря которым браузер и отделяет заголовки от html-кода. Но приходит это все вместе, в виде одной строки.

А вот что у Вас за протокол, и в каком формате приходят сообщения - мне неизвестно. Если Вам просто нужно передать строку
Code
1
42["message", "Сообщение"]
на сервер, то передать ее можно точно также:
PHP
1
fputs($fp, "42[\"message\", \"Сообщение\"]")
А вот какие там должны быть заголовки вначале и чем отделяться, и как сообщение должно шифроваться это другой вопрос.

Вы вообще не предоставили никакой информации куда Вы там подключаетесь, по какому протоколу (заголовки не очень то похожи на http). Если это просто какой то чат, то спросите у создателя чата как все это должно выглядеть. Тут никто об этом даже догадываться не может.
0
 Аватар для psinetron
9 / 9 / 5
Регистрация: 24.01.2012
Сообщений: 61
04.07.2014, 08:28  [ТС]
pav1uxa,
Цитата Сообщение от pav1uxa Посмотреть сообщение
А вот что у Вас за протокол,...
Указал в стартовом топике:
Цитата Сообщение от psinetron Посмотреть сообщение
Возникла необходимость подключится к вебсокету (на Nodejs) через пхп
Ключевое слово вебсокет. То что на ноде использую именно socket.io и что формат сообщений должен быть именно такой
PHP
1
42["message", "Сообщение"]
я не указывал, потому как задача состояла в том, чтобы отправить сообщение (хоть какое-либо) по протоколу вебсокета
Цитата Сообщение от pav1uxa Посмотреть сообщение
Да нет, все точно. Заголовки это тоже информация.
Заголовки - это заголовки. А вот сообщение к заголовкам не относится. У меня ошибка была как-раз таки в заголовках. И принцип работы с вебсокетом оказался в том, что при обмене заголовками соединение не нужно разрывать, а продолжать держать открытым.
Обменялись заголовками - передавай сообщения в формате websocket
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.07.2014, 08:28
Помогаю со студенческими работами здесь

Php и websocket
необходимо реализовать кое-какой функционал через вебсокет. серверная часть должна получать информацию о текущем авторизованном...

Websocket php
Есть ли какие-то гайды по этой теме про то как создать с нуля и на чистом php. P.S Я имею ввиду серверную часть, так как клиентская на js,...

WebSocket на PHP
есть такой код: &lt;?php $socket = stream_socket_server(&quot;tcp://0.0.0.0:8000&quot;, $errno, $errstr); if (!$socket) { ...

Использование Websocket в PHP
Здравствуйте. Я начинающий веб - разработчик. Сейчас пытаюсь написать сервер, с использованием websocket. Работаю в windows. Использую...

Адаптация Laravel 5.3 и PHP WEBSocket
Доброго времени суток. У меня есть проект на Laravel 5.3 и чат на PHP WebSocket. На данном этапе чат работает так: Один из клиентов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru