Библиотека PHP для асинхронного обслуживания WebSockets. Создавайте свое приложение с помощью простых интерфейсов и повторно используйте его, не меняя никакого кода, просто комбинируя различные компоненты.
В настоящее время мы стремимся возродить Ratchet, чтобы обновить его до последних версий и использовать это как отправную точку для будущих более крупных обновлений. Нам нужна ваша помощь для достижения этой цели. Способы помощи см. в билете № 1054.
Требуется доступ к оболочке, рекомендуется root-доступ. Чтобы избежать блокировки прокси-сервера/брандмауэра, рекомендуется запрашивать WebSockets через порт 80 или 443 (SSL), для которого требуется root-доступ. Для этого вместе с веб-стеком синхронизации вы можете использовать обратный прокси-сервер или два отдельных компьютера. Более подробную информацию можно найти в документации сервера conf.
Документация по пользователю и API доступна на веб-сайте Ratchet: http://socketo.me.
См. https://github.com/cboden/Ratchet-examples для некоторых готовых рабочих демонстраций с использованием Ratchet.
Нужна помощь? Есть вопросы? Хотите оставить отзыв? Напишите сообщение в списке рассылки групп Google.
<?php
use Ratchet MessageComponentInterface ;
use Ratchet ConnectionInterface ;
// Make sure composer dependencies have been installed
require __DIR__ . ' /vendor/autoload.php ' ;
/ * *
* chat . php
* Send any incoming messages to all connected clients ( except sender )
* /
class MyChat implements MessageComponentInterface {
protected $ clients ;
public function __construct () {
$ this -> clients = new SplObjectStorage ;
}
public function onOpen ( ConnectionInterface $ conn ) {
$ this -> clients -> attach ( $ conn );
}
public function onMessage ( ConnectionInterface $ from , $ msg ) {
foreach ( $ this -> clients as $ client ) {
if ( $ from != $ client ) {
$ client -> send ( $ msg );
}
}
}
public function onClose ( ConnectionInterface $ conn ) {
$ this -> clients -> detach ( $ conn );
}
public function onError ( ConnectionInterface $ conn , Exception $ e ) {
$ conn -> close ();
}
}
// Run the server application through the WebSocket protocol on port 8080
$ app = new Ratchet App ( ' localhost ' , 8080 );
$ app -> route ( ' /chat ' , new MyChat , array ( ' * ' ));
$ app -> route ( ' /echo ' , new Ratchet Server EchoServer , array ( ' * ' ));
$ app -> run ();
$ php chat.php
// Then some JavaScript in the browser:
var conn = new WebSocket ( 'ws://localhost:8080/echo' ) ;
conn . onmessage = function ( e ) { console . log ( e . data ) ; } ;
conn . onopen = function ( e ) { conn . send ( 'Hello Me!' ) ; } ;