読者です 読者をやめる 読者になる 読者になる

【Node.js】socket.io-php-emitterの使い方

Node.js

まずは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コードを実行すればクライアントにメッセージが届く。