ФорумПрограммированиеPythonDjango → channels создать 2 независимые группы

channels создать 2 независимые группы

  • polin11

    Сообщения: 41 Репутация: N Группа: Кто попало

    Spritz 5 февраля 2017 г. 16:07

    есть хороший пример на Django Channels — Channels 1.0.3 documentation [channels.readthedocs.io] обмена соощений между группами
    нужно создать 2 независмые группы (chat и init), для обмена сообщениями, которые получают только собщения своей группы, пробовал так

    In consumers.py

    
    from channels import Group
    
    # Connected to websocket.connect
    def ws_add(message):
        message.reply_channel.send({"accept": True})
        Group("chat").add(message.reply_channel)
        Group("init").add(message.reply_channel)
    
    # Connected to websocket.receive
    def ws_message(message):
        Group("chat").send({
            "text":  message.content['text'] + 'chat',
        })
        Group("init").send({
            "text":  message.content['text'] + 'init',
        })
    
    # Connected to websocket.disconnect
    def ws_disconnect(message):
        Group("chat").discard(message.reply_channel)
        Group("init").discard(message.reply_channel)
        
    routing.py
    
    
    from channels.routing import route
    from myapp.consumers import ws_add, ws_message, ws_disconnect
    
    channel_routing = [
        route("websocket.connect", ws_add),
        route("websocket.receive", ws_message),
        route("websocket.disconnect", ws_disconnect),
    ]
    

    template.html

    
    //Группа chat
    socket = new WebSocket("ws://" + window.location.host + "/chat/");
    socket.onmessage = function(e) {
        alert(e.data);
    }
    socket.onopen = function() {
        socket.send("hello world");
    }
    // Call onopen directly if socket is already open
    if (socket.readyState == WebSocket.OPEN) socket.onopen();
    //Группа INIT
    socket1 = new WebSocket("ws://" + window.location.host + "/init/");
    socket1.onmessage = function(e) {
        alert(e.data);
    }
    socket1.onopen = function() {
        socket1.send("hello world");
    }
    // Call onopen directly if socket is already open
    if (socket1.readyState == WebSocket.OPEN) socket1.onopen();
    

    Не получается сделать изолированные группы, сообщения приходят в обе группы

Пожалуйста, авторизуйтесь, чтобы написать комментарий!