2017-11-26 14 views
0

私のプログラムにはいくつかの部屋があります。各ユーザーはこれらのルームに接続してメッセージを送信できます。各部屋には、私はグループがあります。私はこれらのグループのルーム名を接続機能で指定したいと思います。私は接続機能でルーム名を送信する方法を知らない。Djangoチャンネルのconnect関数で部屋名を送る方法

@channel_session_user_from_http 
def chat_connect(message):  
    message.reply_channel.send({'accept': True}) 

@touch_presence 
@channel_session_user 
def chat_receive(message): 
    data = json.loads(message['text']) 
    myRoom = data['room'] 
    messageChat = data['messagechat'] 

    if not message.user.is_authenticated():   
     return 

    Group(myRoom).add(message.reply_channel) 
    Room_channels_presence.objects.add(myRoom, message.reply_channel.name, message.user) 
    message.channel_session['room'] = myRoom 

    #store in db 
    try: 
     room = Room.objects.get(slug=myRoom) 
     message_model = Message(
          user = message.user, 
          room = room, 
          text = messageChat 
         ) 
     message_model.save() 
    except: 
     pass 


    my_dict = { 
     'user': message.user.username, 
     'messagechat': messageChat 
    } 
    Group(myRoom).send({'text': json.dumps(my_dict)}) 

答えて

0

部屋の名前を送信するため。私はjsファイルでonopen関数を使用していました。 初めて部屋に接続すると、実際にはwebsocketのonopen機能が実行されます。 私たちはonopen関数の本文にテキストを送ることができます。このように:その後、

chatsock.onopen = function() {    
    //in order to set room' name 
    var message = { 
     messagechat: "", 
     room: roomSlug 
    }  
    chatsock.send(JSON.stringify(message)); 
} 

、私たちは、このテキストを受け取ることができますconsumers.pyに受信機能:

def chat_receive(message): 
    data = json.loads(message['text']) 
    myRoom = data['room'] 
    messageChat = data['messagechat'] 

    if not message.user.is_authenticated():   
     return  

    Group(myRoom).add(message.reply_channel) 
    Room_channels_presence.objects.add(myRoom, message.reply_channel.name, message.user) 
    message.channel_session['room'] = myRoom 

    #if seding message came from onopen function in realtime.js 
    #we just want to create a session for room's name 
    if not messageChat: 
     print('notttttttttt') 
     return 
関連する問題