Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Работа с socket или WebSockets
Форумы портала PHP.SU » » Работа с сетью » Работа с socket или WebSockets

Страниц (1): [1]
 

1. Hapson - 31 Мая, 2016 - 14:48:43 - перейти к сообщению
Всем привет.
Суть проблемы: я забыл php Улыбка
Есть некий сервис, который предоставляет кнопку для сбора пожертвований. Для мониторинга имеются нотификаторы: оповещение о пожертвовании и виджет сбора средств, показывающий сколько уже собрано и сколько нужно собрать.
Помимо этого сервиса есть еще один аналогичный. Так вот мне нужно получать данные от этих сервисов и формировать из них свои нотификаторы. У одного сервиса есть хороший API, а вот другой сервис, толи еще не успел документировать API, толи не хотят, но вот что мне ответили:
Цитата:
подключитесь по адресу: socket.site.ru:3001 с передачей двух параметров:
token - Ваш токен;
type - со значением "alert_widget" или "minor".
Вы будете получать информацию о пожертвованиях в формате JSON в реальном времени.

Так вот, помогите, как это сделать. Я пробовал подключиться через socket_connect - подключаюсь, но параметры им как передать?
А вообще они это организовали наверно через WebSockets, так как их виджеты - это web страрички, в которых имеются обезображенные JavaScript обернутые в eval.
Но мне собственно особо без разницы, как получать данные - через javascript или php.
2. Hapson - 02 Июня, 2016 - 10:22:27 - перейти к сообщению
Никто не знает?
3. OrmaJever - 02 Июня, 2016 - 12:04:17 - перейти к сообщению
а что тут знать? если это и правда вебсокеты то с ними не сложно
https://learn[dot]javascript[dot]ru/websockets
а всё остальное должно быть в описании к этому апи, каким способом параметры передавать, что будет приходить и т.д.
4. Hapson - 02 Июня, 2016 - 13:44:47 - перейти к сообщению
OrmaJever
Да сервис использует WebSocket, более того - библиотеку socket.io.
Осталось только разобраться в их скриптах, в божеский вид я их привел, нужно отследить, как передаются параметры.
(Добавление)
Еще вопрос, если делать это на php, то какой функцией вообще передаются параметры - socket_write?
И каков порядок подключения и дальнейшего прослушивания сокета? Везде по-разному описывают. Что-то там нужно биндить, какие-то опции ставить...
5. OrmaJever - 02 Июня, 2016 - 15:42:39 - перейти к сообщению
Hapson пишет:
И каков порядок подключения и дальнейшего прослушивания сокета?

я же дал ссылку, там всё наглядно написано, код не сложный.
Hapson пишет:
Еще вопрос, если делать это на php, то какой функцией вообще передаются параметры - socket_write?

технология вебсокетов по большей части придумана для браузера, поэтому клиент в большинстве случаев - браузер где и есть всё нужное для подключения, а вот в php я не встречал библиотек для работы с вебсокетами, они скорее всего есть, надо погуглить.
6. Hapson - 02 Июня, 2016 - 17:54:48 - перейти к сообщению
OrmaJever
Эм... ты не понял. Меня интересует работа в php с этими функциями http://php.net/manual/ru/ref.sockets.php
Правильная работа. То есть, подключиться к сокету и ожидать от него постоянно данные, по окончании сеанса работы правильно разорвать соединение. Сеанс может длиться 2-3 часа.
7. OrmaJever - 02 Июня, 2016 - 18:05:13 - перейти к сообщению
Hapson socket_* это низкоуровневые сокеты, работать с ними не сложно но тут они не помогут. Технология websocket во-первых "шифрует" каждый пакет во-вторых требует не просто соединения а некий handleshake, я сомневаюсь что вы хотите с этим разбираться, поэтому лучше погуглить библиотеки для работы с вебсокетами.
8. Hapson - 02 Июня, 2016 - 18:31:58 - перейти к сообщению
OrmaJever
Для реализации через javascript есть библиотека socket.io - они используют ее, можно просто модифицировать их код под свои нужды.
Но хотелось бы делать это на php, так как есть еще API другого сервиса, код для которого я буду писать на php. И, хотелось бы объединить это все как можно проще.
Меня интересует, как послать на их сервер данные после коннекта. И как потом ожидать данные от них
9. esterio - 02 Июня, 2016 - 20:02:53 - перейти к сообщению
OrmaJever ж написал что для WebSocket-ов нужно рукопожатия. На уровне sockets.io они использують возможность в браузере уже готовую. В PHP такого нету. Вам либо нужно писать свое с нуля, что очень нелегко или использовать готовую библиотеку что предпочтительней.
10. Hapson - 03 Июня, 2016 - 14:50:14 - перейти к сообщению
OK, я кажется начинаю понимать Улыбка
Получилось сделать на js с использованием socket.io. Только вот непонятно, есть ли там возможность слушать все события от сервера, или обязательно свой обработчик на каждое событие.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var socket = io.connect(WS_host);
  3.  
  4. socket.on("event", callback);
  5.  

 

Powered by ExBB FM 1.0 RC1