Ratchet
v0.4.4
WebSocket을 비동기적으로 제공하기 위한 PHP 라이브러리입니다. 간단한 인터페이스를 통해 애플리케이션을 구축하고 다양한 구성 요소를 결합하는 것만으로 코드를 변경하지 않고도 애플리케이션을 재사용할 수 있습니다.
우리는 현재 Ratchet을 부활시켜 최신 버전으로 업데이트하고 이를 향후 더 큰 업데이트의 출발점으로 사용하는 것을 목표로 하고 있습니다. 이 목표를 달성하려면 여러분의 도움이 필요합니다. 도움을 줄 수 있는 방법은 티켓 #1054를 참조하세요.
셸 액세스가 필요하며 루트 액세스가 권장됩니다. 프록시/방화벽 차단을 방지하려면 루트 액세스가 필요한 포트 80 또는 443(SSL)에서 WebSocket을 요청하는 것이 좋습니다. 이를 위해 동기화 웹 스택과 함께 역방향 프록시 또는 두 개의 별도 시스템을 사용할 수 있습니다. 자세한 내용은 server conf 문서에서 확인할 수 있습니다.
사용자 및 API 문서는 Ratchet 웹사이트(http://socketo.me)에서 확인할 수 있습니다.
Ratchet을 사용한 즉시 사용 가능한 작업 데모는 https://github.com/cboden/Ratchet-examples를 참조하세요.
도움이 필요하신가요? 질문이 있나요? 피드백을 제공하고 싶으신가요? 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!' ) ; } ;