ホームページ  >  記事  >  ウェブフロントエンド  >  Socket.IO Redis を購読する Channel_html/css_WEB-ITnose

Socket.IO Redis を購読する Channel_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 11:21:471167ブラウズ

Node.js プログラムでは、Socket.IO を使用してリアルタイム アプリケーションを構築できます。 ただし、Java や Python の Web バックエンドなど、バックエンドが Socket.IO と異種混合である場合もあります。 現時点では、異種バックエンドと Socket.IO サービスを接続するためのトランジットとして Redis のサブスクリプション/公開メカニズムを使用できます。 この記事では、Socket.IO で Redis チャネルをサブスクライブする方法について説明します。

Java/Python/C# で Redis Channel にメッセージをパブリッシュする方法については、対応する言語の Redis SDK を参照してください。

ソフトウェアをインストールします

  1. Redis。公式 Web サイト http://redis.io/ を参照してインストールし、ここからダウンロードできます。
  2. Node.js。公式 Web サイト https://nodejs.org/ から直接ダウンロードすることもできます。

次に、Socket.IO サーバー プロジェクトとしてフォルダーを作成し、その中に Socket.IO と Node.js の Redis クライアントをインストールします。

npm install Socket.IO redis --save

シンプルな Socket.IO サービス

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 チャンネルを購読する

上記のサーバー ファイルに 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 名前空間に接続されているすべてのブラウザーもメッセージを受信して​​コンソールに出力します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。