2017-08-03 7 views
1

こんにちは、私はdjangoチャンネルの作成者からgithubプロジェクトmultichatの一部をコピーしています。Djangoチャンネル - 接続されていません

jqueryを使用しない、一部のコンシューマの名前を変更するなど、コードを少し変更しています。私はページに参​​加するときただし、コードを実行し、JSは、それは単に1が思うだろう

[2017/08/03 13:13:48] WebSocket HANDSHAKING /chat/stream [127.0.0.1:37070] 
[2017/08/03 13:13:48] WebSocket CONNECT /chat/stream [127.0.0.1:37070] 

がofcourseの罰金であると言うのWebSocketを作成するときに

私はしかし私をi'n ...文字通りエラーを持っていません接続機能私は印刷物( "******** CONNECTED **********")を持っていますが、コンソールにはどこにも見えません。それは単に誰かが接続するときに私がそれを話した機能を実行しませんが、それでも接続された人はそれがエラーを投げないと言います。

これがメインのルーティングです:

channel_routing = [ 
    include("crypto_chat.routing.websocket_routing", path=r"^/chat-stream/$"), 
     include("crypto_chat.routing.chat_routing"), 
] 

ルーティングアプリから:

websocket_routing = [ 
    route("websocket.connect", ws_connect), 
    route("websocket.receive", ws_receive), 
    route("websocket.disconnect", ws_disconnect), 
] 

chat_routing = [ 
    route("chat.receive", chat_send, command="^send$"), 
    route("chat.receive", user_online, command="^online$"), 

接続消費者:

@channel_session_user_from_http 
def ws_connect(message): 
    # only accept connection if you have any rooms to join 
    print("******************CONNECT*************************''") 
    message.reply_channel.send({"accept": True}) 
    # init rooms - add user to the groups and pk num to the session 
    message.channel_session['rooms'] = [] 
    for room in Room.objects.get(users=message.user): 
     room.websocket_group.add(message.reply_channel) 
     message.channel_session['rooms'].append(room.pk) 

    print(message.channel_session['rooms']) 

相続JS(注:私は、JSの拡張機能を使用していますプロジェクトウェブサイトでも利用可能です):

答えて

1

Websocketのパスは、サーバー側とクライアント側で一致する必要があります。サーバー側では/chat-stream/、クライアント側では/chat/streamです。これらは一致する必要があります。また、末尾のスラッシュを忘れないようにしてください。django explicitly requires it

+0

私はしばらく前に気付きました:p、それを見て+1: – Bolian

+0

@Bolian:答えを見つけたらいつでもあなた自身の質問に答えることができます。 – hoefling

関連する問題