Я разработал соединение клиент-сервер с помощью socket.io
, и я рад сказать, что он работает отлично. Проблема возникает из-за того, что мне нужно создать это соединение из php Source (не «echo html javascript»). Что-то вроде
$socket = socket.createConectionJS;
Я пробовал разные способы, такие как:
Я думаю, что единственный способ разрешить это имитирует соединение веб-сокета, создавая сокет таким же образом, как и класс 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 – продвигать некоторые события на передний план.
Посмотрите, это может вам помочь.
Лучший