On Github mp-php / reveal-fuel-ratchet
FuelPHP & CodeIgniter ユーザの集い on October 12, 2013
Mamoru Otsuka (@madmamor)
双方向通信を可能にする、ネットワーク用の通信規格 XMLHttpRequest(Ajax)の欠点を解決する技術として開発されているhttp://ja.wikipedia.org/wiki/WebSocket
一定間隔でサーバにリクエスト(ポーリング)
→通信毎にコネクションを確立する
→WebSocketなら同じコネクションで何度も通信
→若干のラグが発生
→WebSocketなら即時
レスポンスをわざと遅らせて擬似的にプッシュ(Comet)
→HTTPの接続が長引きサーバの負担となる
→WebSocketなら専用プロトコルでコネクションを維持してサーバの負担を軽減できる
Node.js + Socket.IOやPlay Frameworkで開発しようとすると
→WebSocket以外の学習コスト
→使用言語変更のリスク(業務)
セッションの共有が困難
→双方の暗号化/復号化ルーチンを統一する必要があるhttp://fuelphp.com/forums/discussion/comment/13149 (FuelPHPでなくても、同じ問題は出てくると思われる)
以降「Ratchetパッケージ」と呼びます
# ダウンロード $ cd xxx # 任意のディレクトリ $ git clone git://github.com/zeromq/libzmq.git # インストール $ cd libzmq/ $ sudo ./autogen.sh $ ./configure $ make $ sudo make install
libtoolやautoconfのnot foundエラーが出たら、以下の手順等でインストールして下さい。
XcodeのGUIからCommand Line Toolsをインストール Mac Portsからlibtool、autoconf、automakeをインストール# php.hのエラーを回避するため、公式からPHPをDL $ cd xxx # 任意のディレクトリ $ wget http://www.php.net/get/php-5.4.20.tar.bz2/from/jp1.php.net/mirror -O php-5.4.20.tar.bz2 $ tar zxf php-5.4.20.tar.bz2 $ cd php-5.4.20 $ ./configure $ cd ../ $ mkdir /Applications/MAMP/bin/php/php5.4.4/include $ mv php-5.4.20 /Applications/MAMP/bin/php/php5.4.4/include/php # php-zmqのインストール $ cd xxx # 任意のディレクトリ $ git clone git://github.com/mkoppanen/php-zmq.git $ cd php-zmq/ $ phpize $ ./configure # エラーが出たので、Mac Portsでre2cとpkgconfigのバージョンを最新にしました。 $ make $ sudo make install
# 以下を追記する。"php -i | grep 'Configuration File'" で表示されるphp.iniも忘れずに。 extension=zmq.so
$ sudo apt-get install -y libzmq-dev re2c pkg-config paco # pacoは任意 $ cd xxx # 任意のディレクトリ $ git clone git://github.com/mkoppanen/php-zmq.git $ cd php-zmq/ $ phpize $ ./configure $ make $ sudo paco -D make install
# 以下を追記する。"php -i | grep 'Configuration File'" で表示されるphp.iniも忘れずに。 extension=php_zmq.dll
# composer.jsonに以下を追記 "mp-php/fuel-packages-ratchet": "dev-master" # インストール $ php composer.phar install # 二回目以降はupdateapp/config/config.php でRatchetパッケージを有効化
'always_load' => array('packages' => array( 'ratchet', ...packages/ratchet/config/ratchet.php を app/config/ 下にコピー
# HELPの表示 $ php oil r ratchet:help
$ php oil r ratchet:ws My_Ratchet_Ws 1337