まずはPHP側のライブラリをインストールする。
https://github.com/rase-/socket.io-php-emitter
redis自体とphpのredisライブラリが必要になる。
redisライブラリは php-redis or TinyRedisClient を利用する。
TinyRedisClientはsocket.io-php-emitterに付属しているので、
とりあえずsocket.io-php-emitterをインストールすれば問題ないっぽい。
インストールはcomposerを利用する。
composerの使い方が分からない方はググって下さい。
以下はインストールした状態での説明です。
PHPコードは以下になる。
socket.io系のライブラリはメッセージ送信の構文というか、使い方が同じだと考えていい。
of()で名前空間を指定、to() でルーム名 or socketID を指定する感じ。
<?php //composerでインストールしたライブラリを読み込むためのオートロード require 'vendor/autoload.php'; $redis = new \Redis(); // Using the Redis extension provided client $redis->connect('127.0.0.1', '6379'); $emitter = new SocketIO\Emitter($redis); //名前空間 $emitter->of('/chat')->emit('myphp', 'chat'); //room $emitter->of('/chat')->to('room1')->emit('myphp', 'chat + room1'); //socketID $emitter->of('/chat')->to('xJcrmrcc6imEHTICAAAA')->emit('myphp', 'chat + socketID');
あとはクライアント側で myphp をハンドリングすればOK。
$(function(){ var chatRoom = io('http://192.168.33.10:3000/chat', { transports: [ 'websocket' ] }); chatRoom.on('myphp', function(msg){ console.log(msg); }); });
あとはnodeを起動してからPHPコードを実行すればクライアントにメッセージが届く。