Ratchet
v0.4.4
WebSocket を非同期で提供するための PHP ライブラリ。シンプルなインターフェイスを通じてアプリケーションを構築し、コードを一切変更せずに、さまざまなコンポーネントを組み合わせるだけでアプリケーションを再利用できます。
私たちは現在、Ratchet を復活させて最新バージョンに更新し、これを今後のより大きなアップデートの出発点として使用することを目指しています。この目標を達成するにはあなたの助けが必要です。支援方法についてはチケット #1054 を参照してください。
シェル アクセスが必要であり、root アクセスが推奨されます。プロキシ/ファイアウォールのブロックを回避するには、WebSocket をポート 80 または 443 (SSL) でリクエストすることをお勧めします。これには root アクセスが必要です。これを行うには、同期 Web スタックとともに、リバース プロキシまたは 2 つの別個のマシンを使用できます。詳細については、サーバー設定ドキュメントを参照してください。
ユーザーおよび API のドキュメントは、Ratchet の Web サイト 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!' ) ; } ;