04. Redisの有効化
Channelsのチャンネルレイヤーがバックストアとして使用するRedisを有効化します。
解説
Redisを有効化するために、すべきことは以下です。
- WebsocketConsumerクラスの実装クラスを作成します。 ( consumers.py )
- ルーティングのコードを追加します。 ( routing.py )
- Redisのインストールし、起動します。
- チャンネルレイヤーを設定します。 ( settings.py )
準備
03. を実施していない場合は、まず、03. を実施します。
仮想環境への切り替え
仮想環境に切り替えていない場合は、「MyChat」フォルダにて、下記コマンドを実行し、仮想環境に切り替えます。
「mysite」フォルダに移動していない場合は移動します。
これ以降のコマンドの実行は、仮想環境にて実行します。
WebSocket Consumerの実装クラスの作成
WebSocketについての処理を受け持つWebSocket Consumerの実装クラスとしてChatConsumerクラス作成します。
「mysite/chat」フォルダに、「consumers.py」というファイルを作成します。
フォルダ/ファイルの構成は以下です。
WebSocketの動作確認用の最低限のコードを記述します。
「consumers.py」の内容を以下のようにします。
ルーティングのコードの追加
作成したConsumerへのルーティングのコードを追加します。
「mysite/chat」フォルダに、「routing.py」というファイルを作成します。
フォルダ/ファイルの構成は以下です。
「routing.py」の内容を以下のようにします。
続いて、プロジェクトの「asgi.py」ファイル(「mysite/mysite/asgi.py」ファイル)に、以下の変更を加えます。
- URLRouterクラスのimport文を追加します。 ( from channels.routing import URLRouter )
- AuthMiddlewareStackクラスのimport文を追加します。 ( from channels.auth import AuthMiddlewareStack )
- chat.routingモジュールのimport文を追加します。 ( import chat.routing )
- 作成した「routing.py」ファイルへのルーティング設定をapplicationの設定のコードに追加します。 ('websocket': AuthMiddlewareStack( URLRouter( chat.routing.websocket_urlpatterns ) ), )
「mysite/mysite/asgi.py」の内容を以下のようにします。
Redisのインストールと起動
Channelsのチャンネルレイヤーは、Redisをバックストアとして使用します。
Windowsの場合
WindowsでRedisを使用する場合は、「Memurai」というソフトウェアをインストールします。
(「Redis on Windows」というソフトウェアもありますが、「Redis on Windows」のウェブサイトには、「このプロジェクトはもうメンテナンスされていません。『Memurai』をチェックしてみては」と書かれています。)
「Memurai」のサイトにアクセスし、インストーラーをダウンロードします。
「Developer Edition」は無料で使用することができます。
(「Developer Edition」は無料で使用することができますが、10日ごとにリスタートする必要があります)
「Memurai」をインストールします。
・「環境変数のPATHにRedisのパスを追加する」はチェックを入れます。
・「Radisのポート番号をWindowsのファイアーウォールの例外に追加する」はチェックを入れます。
「Memurai」をインストールすると、「Memurai」はWindowsのサービスとして起動します。
クラウド、Linux、Macの場合
Redisのインストール方法をネット検索にて、「Redis インストール (クラウド名、LinuxOS名、Mac)」等で調べ、Redisをインストールし、起動します。
チャンネルレイヤーの設定
Channelsのチャンネルレイヤーのバックストアの設定を追加します。
「mysite/mysite/settings.py」の最下部に、チャンネルレイヤーの設定を追加します。
動作確認
「mysite」フォルダにて、下記コマンドを実行し、Djangoシェルを起動します。
以下のコードを実行します。
{'type': 'hello'}
と表示されます。
「exit()」と入力し、Djangoシェルを終了します。
ダウンロード
関連ページ
前項目:03. Channelsパッケージの有効化
次項目:05. チャットメッセージの送受信