FuelPHP & CodeIgniter ユーザの集い on October 12, 2013
Mamoru Otsuka (@madmamor)
Name : | Mamoru Otsuka |
---|---|
WEB : | http://madroom.net/ |
Twitter : | @madmamor |
Facebook : | mamoru.otsuka |
Blog : | madroom project |
GitHub : | @mamor |
Android Apps : | madroom project |
Location : | Tama-Center, Roppongi |
双方向通信を可能にする、ネットワーク用の通信規格
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エラーが出たら、以下の手順等でインストールして下さい。
# 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 # 二回目以降はupdate
app/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