質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

解決済

django でログインユーザーだけの chat をしたい

kirakuni
kirakuni

総合スコア15

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

1回答

0リアクション

0クリップ

555閲覧

投稿2021/09/16 08:39

django でログインしたユーザーだけの chat をしたいと思っています。

django channels にあるチュートリアルは、1から4まで pipenv で実行し、きちんと動作することを確認しております。

ネット検索にて、「django-channels を使った websocket を用いたチャットアプリの作成」を見つけ、Github からダウンロードして動かしてみたのですが、どうしても web socket が繋がりません。

環境は
linux mint 20.2 cynnamon
です。

python

CHANNEL_LAYERS = { 'default': { 'BACKEND': 'channels_redis.core.RedisChannelLayer', 'CONFIG': { "hosts": [('redis', 6379)], # デフォルト:繋がらない "hosts": [('127.0.0.1', 6379)], # 繋がるが無限ループ }, }, }

デフォルトの"hosts": [('redis', 6379)]にすると以下のように繋がりません。

HTTP GET / 200 [0.16, 127.0.0.1:50358] HTTP GET /room/b024fd92-41c4-421b-982b-53ef1c135314 200 [0.09, 127.0.0.1:50358] WebSocket HANDSHAKING /ws/b024fd92-41c4-421b-982b-53ef1c135314 [127.0.0.1:50438] WebSocket DISCONNECT /ws/b024fd92-41c4-421b-982b-53ef1c135314 [127.0.0.1:50438]

"hosts": [('127.0.0.1', 6379)]にすると、以下のように connect と disconnect が短時間で無限ループのようになります。

HTTP GET /static/debug_toolbar/js/utils.js 304 [0.00, 127.0.0.1:46070] WebSocket CONNECT /ws/b024fd92-41c4-421b-982b-53ef1c135314 [127.0.0.1:46084] WebSocket DISCONNECT /ws/b024fd92-41c4-421b-982b-53ef1c135314 [127.0.0.1:46084] HTTP GET /room/b024fd92-41c4-421b-982b-53ef1c135314 200 [0.07, 127.0.0.1:46070] HTTP GET /static/debug_toolbar/js/toolbar.js 304 [0.00, 127.0.0.1:46094] WebSocket HANDSHAKING /ws/b024fd92-41c4-421b-982b-53ef1c135314 [127.0.0.1:46096] HTTP GET /static/debug_toolbar/js/utils.js 304 [0.00, 127.0.0.1:46094] WebSocket CONNECT /ws/b024fd92-41c4-421b-982b-53ef1c135314 [127.0.0.1:46096] WebSocket DISCONNECT /ws/b024fd92-41c4-421b-982b-53ef1c135314 [127.0.0.1:46096]

参考サイトには「適当に redis サーバを用意したら ./manage.py runserver で起動します。」と書いてあるのですが、その具体的な設定方法がわかりません。

ちなみに「sudo systemctl status redis-server」で確認すると、redis server は active(running)となっています。

また、/etc/redis/redis.conf をいろいろと編集してみたのですが、やはり動きません。

参考サイトのプログラムがあまりにも素晴らしいので、できることなら導入したいのですがどのようにしたらいいのでしょうか?

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。