我对 Django Channels、WebSockets 和聊天应用程序几乎没有疑问。与谷歌一起服务让我进入了聊天室,人们可以在那里建立联系并开始聊天。但我不知道一个用户如何发送另一个用户的即时消息。
例如:
1) 我将 John 添加到朋友中,并想开始聊天。2)在服务器端,我可以生成对象 Room,我和 John 作为成员。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)