PHPウェブソケット

WBOY
リリース: 2016-06-23 14:37:03
オリジナル
1219 人が閲覧しました

http://code.google.com/p/phpws/

説明

PHP 用の WebSocket サーバーおよびクライアント ライブラリ。最新の HyBi 仕様だけでなく、古い Chrome バージョンや一部の Flash フォールバック ソリューションで使用されている古い Hixie #76 仕様でも動作します。

このプロジェクトは、http://www.u2start.com/

ダウンロードにさらにインタラクティブな機能を提供するために開始されました。

現在、ダウンロードはできません。ソースと簡単な例は、GIT リポジトリで入手できます (「ソース」タブを参照)。

機能

サーバー

Hixie #76 および Hybi #12 プロトコル バージョン Flash クライアントのサポート (同じポートで XML ポリシー ファイルも提供) https://github.com を参照/gimite/web-socket-js 互換性のある Flash クライアントのネイティブ Firefox、Safari (iPod / iPhone も)、Chrome、IE10 のサポート。 Flash クライアントでは、Flash をサポートするすべてのブラウザも同様に動作します (IE6 ~ 9、Opera、Android、その他の古いデスクトップ ブラウザを含む)。 Opera (モバイル) は WebSocket をネイティブにサポートしていますが、サポートはデフォルトで無効になっています。 opera:config で有効にできます。

クライアント

Hybi / Hixie76 のサポート。

既知の問題 SSL サポートはフィールドで十分にテストされていません。 ORIGIN チェックの欠如 (getHeaders() を使用して onConnect で手動で実装できます。Origin ヘッダーが気に入らない場合はユーザーを切断するだけです) HyBi 仕様の拡張データはサポートされていません。要件

サーバー

PHP 5.3 サーバーのポートを開く 暗号化された接続でサーバーを実行するための PHP OpenSSL モジュール

クライアント

HyBi (#8-#12) ドラフトバージョンを実装する PHP 5.3 サーバー SSL を使用して接続するための PHP OpenSSL モジュール(wss:// uris)

サーバーの例
#!/php -q<?php// Run from command prompt > php demo.phprequire_once("websocket.server.php");/** * This demo resource handler will respond to all messages sent to /echo/ on the socketserver below * * All this handler does is echoing the responds to the user * @author Chris * */class DemoEchoHandler extends WebSocketUriHandler{        public function onMessage(IWebSocketConnection $user, IWebSocketMessage $msg){                $this->say("[ECHO] {$msg->getData()}");                // Echo                $user->sendMessage($msg);        }        public function onAdminMessage(IWebSocketConnection $user, IWebSocketMessage $obj){                $this->say("[DEMO] Admin TEST received!");                $frame = WebSocketFrame::create(WebSocketOpcode::PongFrame);                $user->sendFrame($frame);        }}/** * Demo socket server. Implements the basic eventlisteners and attaches a resource handler for /echo/ urls. * * * @author Chris * */class DemoSocketServer implements IWebSocketServerObserver{        protected $debug = true;        protected $server;        public function __construct(){                $this->server = new WebSocketServer(0, 12345, 'superdupersecretkey');                $this->server->addObserver($this);                $this->server->addUriHandler("echo", new DemoEchoHandler());        }        public function onConnect(IWebSocketConnection $user){                $this->say("[DEMO] {$user->getId()} connected");        }        public function onMessage(IWebSocketConnection $user, IWebSocketMessage $msg){                $this->say("[DEMO] {$user->getId()} says '{$msg->getData()}'");        }        public function onDisconnect(IWebSocketConnection $user){                $this->say("[DEMO] {$user->getId()} disconnected");        }        public function onAdminMessage(IWebSocketConnection $user, IWebSocketMessage $msg){                $this->say("[DEMO] Admin Message received!");                $frame = WebSocketFrame::create(WebSocketOpcode::PongFrame);                $user->sendFrame($frame);        }        public function say($msg){                echo "$msg \r\n";        }        public function run(){                $this->server->run();        }}// Start server$server = new DemoSocketServer(0,12345);$server->run();
ログイン後にコピー
クライアントの例

クライアントはサーバーほど興味深いものではなく、主にサーバーのテストに使用されます

<?php        require_once("websocket.client.php");        $input = "Hello World!";        $msg = WebSocketMessage::create($input);        $client = new WebSocket("ws://127.0.0.1:12345/echo/");        $client->sendMessage($msg);        // Wait for an incoming message        $msg = $client->readMessage();        $client->close();        echo $msg->getData(); // Prints "Hello World!" when using the demo.php server
ログイン後にコピー

?> 

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート