Intereting Posts
Единичное тестирование для поддержки Unicode декодирование массива из json в PHP и невозможность доступа к элементам массива с использованием ключей Печать PHP Call Stack как установить id элемента с помощью PHP dom? Сохранение файла .xls с помощью fwrite Длительный фоновый скрипт PHP блокирует другие страницы PHP до тех пор, пока он не будет завершен Не открывать соединение Sql для повторения множества запросов? Или закрыть каждый шаг? Simplexml получает узел по атрибуту Laravel 4 Отношения между мужчинами и женщинами загрузить файл в MySql DB с помощью PHP Лучшая практика: как структурировать массивы – стандарты и соглашения об именах Добавьте строку в таблицу и отправьте на сервер, отправьте стол через jquery на php Обнаруживать SSL, когда прокси * всегда * утверждает, что безопасное соединение Помещение PHP-массива в MySQL с дополнительными столбцами Как проверить, успешно ли Ci вставил данные

Использование PHP с Socket.io

Можно ли использовать Sockets.io на стороне клиента и общаться с приложением на PHP на сервере? Поддерживает ли PHP даже такой способ «долгоживущей связи» для написания кода?

Весь пример кода, который я нахожу для socket.io, похоже, для node.js на стороне сервера, поэтому никакой помощи нет.

Может быть немного поздно, чтобы ответить на этот вопрос, но вот что я нашел.

Я не хочу обсуждать тот факт, что узлы делают это лучше, чем php или нет, это не главное.

Решение: я не нашел никакой реализации socket.io для PHP.

Но есть несколько способов внедрения WebSockets . Существует этот плагин jQuery, позволяющий использовать веб-узлы, грациозно унизительно для необоснованных браузеров. На стороне PHP есть этот класс, который, как представляется, наиболее широко используется для серверов PHP WS.

Если вы хотите использовать socket.io вместе с php, это может быть ваш ответ!

веб-сайт проекта:

elephant.io

они также находятся на github:

https://github.com/wisembly/elephant.io

Elephant.io предоставляет клиент socket.io, полностью написанный на PHP, который должен использоваться повсюду в вашем проекте.

Это легкая и простая в использовании библиотека, целью которой является приведение некоторых функций реального времени в приложение PHP через socket.io и websockets для действий, которые невозможно выполнить в полном javascript.

пример с веб-сайта проекта (связь с сервером websocket через php)

php-сервер

use ElephantIO\Client as Elephant; $elephant = new Elephant('http://localhost:8000', 'socket.io', 1, false, true, true); $elephant->init(); $elephant->send( ElephantIOClient::TYPE_EVENT, null, null, json_encode(array('name' => 'foo', 'args' => 'bar')) ); $elephant->close(); echo 'tryin to send `bar` to the event `foo`'; 

сервер сокета io

 var io = require('socket.io').listen(8000); io.sockets.on('connection', function (socket) { console.log('user connected!'); socket.on('foo', function (data) { console.log('here we are in action event and data is: ' + data); }); }); 

UPDATE: август 2014. В текущем сайте socket.io v1.0 есть пример PHP: – https://github.com/rase-/socket.io-php-emitter

Если вы действительно хотите использовать PHP в качестве backend для socket.io, вот что я нашел. Две альтернативы серверной версии socket.io php.

https://github.com/walkor/phpsocket.io

https://github.com/RickySu/phpsocket.io

Exmaple коды для первого репозитория, подобного этому.

 use PHPSocketIO\SocketIO; // listen port 2021 for socket.io client $io = new SocketIO(2021); $io->on('connection', function($socket)use($io){ $socket->on('chat message', function($msg)use($io){ $io->emit('chat message', $msg); }); }); 

Эмм, зачем ты хочешь? Оставьте PHP на бэкэнд и NodeJS / Sockets, чтобы сделать свою неблокирующую вещь.

Вот что вам нужно начать: http://groups.google.com/group/socket_io/browse_thread/thread/74a76896d2b72ccc

Лично у меня есть экспресс-работа с конечной точкой, которая явно предназначена для взаимодействия с PHP.

Например, если я отправил пользователю электронное письмо, я хочу, чтобы socket.io отображал пользователю уведомление в режиме реального времени.

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

 var http = require('http'), host = WWW_HOST, clen = 'userid=' + userid, site = http.createClient(80, host), request = site.request("POST", "/modules/nodeim/includes/signonuser.inc.php", {'host':host,'Content-Length':clen.length,'Content-Type':'application/x-www-form-urlencoded'}); request.write('userid=' + userid); request.end(); 

Серьезно, PHP отлично подходит для работы на стороне сервера, и пусть это будет с соединениями, в которых сейчас нет места в этом домене. Зачем делать длинный опрос, когда у вас есть веб-сайты или флеш-память.

Для упомянутого вами «долгоживущего соединения» вы можете использовать Ratchet для PHP. Это библиотека, построенная на основе функций Stream Socket, поддерживаемых PHP с PHP 5.

Для клиентской стороны вам нужно использовать WebSocket, поддерживаемый HTML5, вместо Socket.io (поскольку вы знаете, socket.io работает только с node.js).

Если вы все еще хотите использовать Socket.io, вы можете попробовать таким образом: – найти и получить socket.io.js для использования клиентом – работать с Ratchet, чтобы имитировать способ подключения socket.io на сервере

Надеюсь это поможет!

Если вы действительно хотите использовать PHP в качестве своего бэкенда для WebSockets, эти ссылки могут помочь вам:

https://github.com/lemmingzshadow/php-websocket

http://www.htmlgoodies.com/html5/other/create-a-bi-directional-connection-to-a-php-server-using-html5-websockets.html#fbid=QqpDVi8FqD9

Я еще не пробовал, но вы должны сделать это с помощью ReactPHP и этого компонента сокета . Выглядит так же, как Node, но в PHP.

Как насчет этого ? PHPSocketio ?? Это альтернатива стороне сервера socket.io php. Цикл событий основан на расширении события pecl. Хотя до сих пор я этого не пробовал.

Посмотрите в этой библиотеке для php http://phptrends.com/category/70 . Или используйте native из php http://www.php.net/manual/en/book.sockets.php .