Использую
django-channels для установления сокетного соединения. Сделал всё как указано в gettings started.
Сообщения от клиента к серверу приходят нормально, а вот обратно отправляются, не не доходят (socket.onmessage не срабатывает). Что я делаю не так?
def ws_message(message):
action = json.loads(message.content['text'])['action']
if action == "newchat":
response = new_room(message)
message.reply_channel.send(response)
"asd"
elif action == 'message':
response = new_message(message)
Group("room-%s" % json.loads(message.content['text'])['room']).send(response)
"asd"
elif action == 'history':
response = history(message)
message.reply_channel.send(response)
"asd"
клиент:
socket = new WebSocket("ws://localhost:8000/chat");
socket.onopen = function(e) {
socket.onmessage = function (e) {
alert(e.data);
var jsn = JSON.parse(e.data);
if (jsn['action'] == 'message') {
messageReceived(jsn['message'], jsn['room'], true);
} else if (jsn['action'] == 'history') {
for (var j = jsn['messages'].length - 1; j >= 0; --j) {
messageReceived(jsn['messages'][j], jsn['room'], false);
}
var hist = $('#' + jsn['messages'][0]['chat'] + ' > .chat-history');
hist.animate({scrollTop: hist.prop("scrollHeight")}, 1000);
} else if (jsn['action'] == 'newchat') {
if (jsn['status'] == 'ok') {
var new_elem = '<div id="chat' + jsn['room'] + '" class="sidebar-name"><a href="javascript:register_popup(\'' + jsn['room'] + '\', \'' + jsn['name'] + '\');"><img width="30" height="30" src=""><span>' + jsn['name'] + '</span></a></div>';
$('.chat-sidebar').append(new_elem);
$('#chat' + jsn['room'] + ' a').click();
} else {
$('#chat' + jsn['room'] + ' a').click();
}
}
};
};