ホームページ > 記事 > ウェブフロントエンド > Socket.IO Redis を購読する Channel_html/css_WEB-ITnose
Node.js プログラムでは、Socket.IO を使用してリアルタイム アプリケーションを構築できます。 ただし、Java や Python の Web バックエンドなど、バックエンドが Socket.IO と異種混合である場合もあります。 現時点では、異種バックエンドと Socket.IO サービスを接続するためのトランジットとして Redis のサブスクリプション/公開メカニズムを使用できます。 この記事では、Socket.IO で Redis チャネルをサブスクライブする方法について説明します。
Java/Python/C# で Redis Channel にメッセージをパブリッシュする方法については、対応する言語の Redis SDK を参照してください。
次に、Socket.IO サーバー プロジェクトとしてフォルダーを作成し、その中に Socket.IO と Node.js の Redis クライアントをインストールします。
npm install Socket.IO redis --save
app.js ファイルを作成し、Node.js HTTP モジュールに基づいて Socket.IO サーバーを作成します。 通知とチャットの 2 つの名前空間を作成します。
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'));
異なるブラウザは、noticeaiton に接続するなど、異なる名前空間に接続できます:
var socket = io('/notification');socket.on('message', function (msg) { console.log(msg);});
c7ff80d33136e39e9fa6aae5fbba4a79<を導入する必要があります;/script> については、http://Socket.IO/download/ を参照してください。その他の Socket.IO の例については、http://Socket.IO/docs/#how-to-use を参照してください。
上記のサーバー ファイルに 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.jsSocket.IO listen to port 3001
コマンドライン (Bash、Zsh...) で redis-cli を開き、メッセージをパブリッシュします:
$ redis-cli127.0.0.1:6379> publish notification "fuck you!"
その後、Socket.IO が出力されます通知を受け取りました: ファックユー!、そして /message 名前空間に接続されているすべてのブラウザーもメッセージを受信してコンソールに出力します。