問題タブ [daphne]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Django Channels ソケットへのログインが必要ですか?
Django 1.10 で Channels を試し、いくつかのコンシューマーをセットアップしています。
ゲストがこのプライベートソケットに入るのを防ぐために、接続を実行する前に接続を閉じる login_required デコレーターを作成してみました。また、後でユニットテストを統合してテストしましたが、ゲストを入れ続けているため失敗し続けています(どこでもAnonymousUserエラー)。
また、ログインおよびログアウト時にセッションがクリアされず、古いユーザーがログインできる場合があります。
デコレータ:
消費者コードは次のとおりです。
奇妙なことに、 client.send(signal.message)) 転送間のすべてのロジックをコメントアウトすると、正常に機能し、単体テストに合格します (ゲストがブロックされ、認証コードが実行されないことを意味します [したがって AnonymousUser エラー])。何か案は?
ここにもテストがあります:
私はこれに間違って近づいていますか?もしそうなら、どうすればこれを適切に行うことができますか(認証が必要ですか?)
編集: 何かを試すためにアクション システムを統合しました。Django チャネルが HTTP からセッションをまったく取得していないようです。
false を返すだけです。
EDIT2: 動作するようになりました。localhost を 127.0.0.1 に変更してみましたが、動作することがわかりました。localhost を有効なドメインとして検出して、セッションを移植する方法はありますか?
EDIT3: localhost と 127.0.0.1 の Cookie の問題が見つかりました。報奨金を無駄にしないために、メッセージ/チャネルに auth login_required を個人的にどのように実装しますか?
edit4:なぜうまくいかなかったのかはまだわかりませんが、最終的に問題を回避してアプリを変更した方法は次のとおりです。
アクションシステムを作成しました。入力すると、JSON を介して AUTHENTICATE アクションを送信するまで、ソケットは何もしません。ログインしたアクションをguest_actionsとuser_actionsに分けました。認証されると、セッションが設定され、user_actions を使用できるようになります。
django - Nginx + daphne WebSocket接続が受信しない
daphne が django チャネルを使用するためのリバース プロキシとして nginx を使用します。
ここに私のnginx.confがあります
ダフネのログ:
しかし、クライアント側でのWebSocketの接続はメッセージを受け取りません
手伝って頂けますか?
アップデート:
クライアント側のコード (私は Swift で WebSocket 接続に Starscream ライブラリを使用しています):
ルーティング.py:
消費者.py:
res_user から: https://gist.github.com/leonardoo/9574251b3c7eefccd84fc38905110ce4