Mam małe pytanie dotyczące kanałów Django, WebSockets i aplikacji do czatu. Udostępniając google, przenosi mnie do czatów, gdzie ludzie mogą się połączyć i rozpocząć czat. Ale nie wiem, w jaki sposób jeden użytkownik może wysłać wiadomość błyskawiczną innego użytkownika.Django Channels
Na przykład:
1) dodam Jana do znajomych i chcesz rozpocząć czat. 2) Po stronie serwera mogę wygenerować obiekt Pokój, ze mną i Johnem jako członkami. 3) Kiedy wysłać wiadomość poprzez websocket do tego pokoju, wiem, dla kogo ta wiadomość jest, ale nie wiem jak dostać Jana kanał
@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)