Задать вопрос

Почему не срабатывает WebSocket.onmessage?

Использую 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();
            }
        }
    };
};
  • Вопрос задан
  • 436 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
passshift
@passshift
php, js, html5, css
Как минимум socket.onmessage у Вас в socket.onopen, а такого быть не должно, пропишите его отдельно - ниже, после socket.onopen
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы