我對Django頻道,WebSockets和聊天應用程序沒有什麼疑問。用谷歌服務讓我到聊天室,人們可以在那裏連接並開始聊天。但我不知道一個用戶可以發送另一個用戶即時消息。Django頻道
例如:
1)我給朋友添加約翰,並且想開始聊天。 2)在服務器端,我可以生成對象房間,以我和約翰爲成員。 3)當我通過WebSocket的發送消息給這個房間,我知道這個消息是誰,但我不知道怎麼去約翰的通道
@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)