Django チャネル、WebSocket、およびチャット アプリケーションについては、ほとんど疑問がありません。Google でサービスを提供すると、人々が接続してチャットを開始できるチャットルームにアクセスできます。しかし、あるユーザーが別のユーザーにインスタント メッセージを送信する方法がわかりません。
例えば:
1) ジョンを友達に追加し、チャットを開始したい。2) サーバー側では、私と John をメンバーとしてオブジェクト Room を生成できます。3) WebSocket 経由でこの部屋にメッセージを送信すると、このメッセージが誰宛のものかはわかりますが、 John のチャネルを取得する方法がわかりません。
@channel_session_user_from_http
def ws_connect(message):
rooms_with_user = Room.objects.filter(members=message.user)
for r in rooms_with_user:
Group('%s' % r.name).add(message.reply_channel)
@channel_session_user
def ws_receive(message):
prefix, label = message['path'].strip('/').split('/')
try:
room = Room.objects.get(name=label)
except Exception, e:
room = Room.objects.create(name=get_random_string(30))
for u in message.chmembers:
room.members.add(u)
# here can be somethis like this
# try
reply_channel = Channels.objects.get(online=True, user=u)
Group('%s' % r.name).add(reply_channel)
Group('%s' % room.name).send({
"text": "%s : %s" % (message.user.username, message['text']),
})
@channel_session_user
def ws_disconnect(message):
prefix, label = message['path'].strip('/').split('/')
Group(label).discard(message.reply_channel)