Socket.IO購読Redis Channel
3595 ワード
Node.jsプログラムではSocket.IOはリアルタイムアプリケーションを構築する.しかし、時にはバックグラウンドとSocket.IOは、Java、PythonのWebバックグラウンドなど、異機種です.この場合,Redisのサブスクリプション/パブリケーションメカニズムを中継として利用し,異機種のバックグラウンドとSocketを接続することができる.IOサービス.ここではSocket.IOでRedis Channelを購読する.
Java/Python/C#でメッセージをRedis Channelに公開する方法については、対応言語のRedis SDKを参照してください.
ソフトウェアのインストール Redis.公式サイトを参照できますhttp://redis.io/をインストールします.ここでダウンロードできます. Node.js.公式サイトでもhttps://nodejs.org/直接ダウンロードします.
その後、Socketとしてフォルダを作成します.IOサーバプロジェクトは、
Java/Python/C#でメッセージをRedis Channelに公開する方法については、対応言語のRedis SDKを参照してください.
ソフトウェアのインストール
その後、Socketとしてフォルダを作成します.IOサーバプロジェクトは、
Socket.IO
とNodeをインストールする.jsのredis
クライアント. npm install Socket.IO redis --save
Socket.IO
app.js
ファイル、Nodeベースを く.js HTTPモジュールのSocket.IOサーバ.2つのネーミングスペース、1つのnotification
、1つのchatting
を します.
var server = require('http').createServer();
var io = require('Socket.IO')(server);
io
.of('/notification')
.on('connection', socket => {
console.log('user connected to notification');
socket.on('disconnect', () => console.log('user disconnected'));
});
io
.of('/chatting')
.on('connection', socket => console.log('user connected to message'));
server.listen(3001, () => console.log('Socket.IO listen to port 3001'));
, notificaiton
:
var socket = io('/notification');
socket.on('message', function (msg) {
console.log(msg);
});
HTML <script src="/path/to/Socket.IO.js"></script>
、 http://Socket.IO/download/.もっとIOの は、 を してください.http://Socket.IO/docs/#how-to-use
Redis Channelの
のサーバファイルにredis
を し、すべてのチャンネルの を できるクライアントを します. チャネルのメッセージは、switch-case
によって され る.
var redis = require('redis');
var redisClient = redis.createClient();
var NOTIFICATION_CHANNEL = 'notification_channel', CHATTING_CHANNEL = 'chatting_channel';
redisClient.on('message', function(channel, message) {
switch (channle){
case NOTIFICATION_CHANNEL:
console.log('notification received:', message);
io.of('/notification').emit('message', message);
break;
case CHATTING_CHANNEL:
console.log('chatting received:', message);
io.of('/chatting').emit('message', message);
break;
}
});
redisClient.subscribe(NOTIFICATION_CHANNEL);
redisClient.subscribe(CHATTING_CHANNEL);
redis.createClient()
のパラメータには、Redisサーバのホスト 、ポート、パスワードなどの を できます. するドキュメントを してください.
テスト
Socketを IOサーバ:
$ node app.js
Socket.IO listen to port 3001
(Bash、Zsh…) redis-cli
、メッセージを します.
$ redis-cli
127.0.0.1:6379> publish notification "fuck you!"
Socket.IO notification received: fuck you!
で、/message
ネーミングスペースに されているすべてのブラウザ もメッセージを し、コンソールに します.