Socket.io из источника php

Я разработал соединение клиент-сервер с помощью socket.io , и я рад сказать, что он работает отлично. Проблема возникает из-за того, что мне нужно создать это соединение из php Source (не «echo html javascript»). Что-то вроде

 $socket = socket.createConectionJS; 

Я пробовал разные способы, такие как:

  • выполнить код с сервера (с помощью spiderMonkey и узла)
  • создавая phpSocket и подключая его к ServerSocket.j (но, судя по всему, формат отличается). или …
  • Наконец, я пробовал по почте с curl, где у меня был доступ к серверу, но я не могу открыть соединение

Я думаю, что единственный способ разрешить это имитирует соединение веб-сокета, создавая сокет таким же образом, как и класс socket.io, но в php

Специалист Anny socket.io может помочь?

Tnks! ! _

Да, я быстро пошел к нему. Мне повезло, что у меня уже есть достаточно продвинутая библиотека веб-скрепок, уже встроенная в PHP, поэтому я просто подключил XML из TamperData (плагин firefox) к ней и изменил некоторые вещи.

Эмулировать xhr-опрос (мой прокси не разрешает веб-узлы, и это все равно было проще) …

Сделайте запрос:

 /socket.io/1/?t=1337779479761 

(Число 13377 … это всего лишь метка времени, используйте время () для ее создания).

Это должно вернуть что-то вроде этого:

 682970926640665221:60:60:websocket,htmlfile,xhr-polling,jsonp-polling 

Возьмите большое количество в передней части, это ваш «[CONNECT_ID]», который вы останетесь на оставшуюся часть сеанса. Теперь сделайте еще один запрос:

 /socket.io/1/xhr-polling/[CONNECT_ID]?t=[TIMESTAMP] 

И вы получите что-то вроде: 1

Это касается того, насколько я потрудился следовать за ним, все это выглядело довольно основательно … нет специальных заголовков или чего-нибудь подлого. Предложите вам использовать TamperData или сниффер пакетов и просто следовать за ним самостоятельно. Вот результат моего кода:

 $ php RealTestCurl.php xml/xhr.xml init1 xhr1 xhr1 xhr1 xhr1 xmlFilename: xml/xhr.xml Step: init1 Reply: 7638339571841585529:60:60:websocket,htmlfile,xhr-polling,jsonp-polling Found: connect_id: ([0-9]*) - 7638339571841585529 Step: xhr1 Reply: 1:: Step: xhr1 Reply: ?46?5:::{"name":"news","args":[{"hello":"world"}]}?63?5:::{"name":"this","args":[{"will":"be received by everyone"}]} Step: xhr1 .... there is a massive 20 second timeout here Step: xhr1 8:: Step: xhr1 8:: 

И на стороне node.js / socket.io, работая над основными примерами с их первой страницы:

 debug - client authorized info - handshake authorized 3445861131360107212 debug - setting request GET /socket.io/1/xhr-polling/3445861131360107212?t=1337781185 debug - setting poll timeout debug - client authorized for debug - clearing poll timeout debug - xhr-polling writing 1:: debug - set close timeout for client 3445861131360107212 debug - websocket writing 5:::{"name":"this","args":[{"will":"be received by everyone"}]} 

Мы разработали и использовали в производстве Elephant.io

Мы в основном используем его на наших серверах cron-jobs, чтобы уведомить наш фронт, а в наших API-интерфейсах Symfony2 – продвигать некоторые события на передний план.

Посмотрите, это может вам помочь.

Лучший