есть хороший пример на
нужно создать 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();
Не получается сделать изолированные группы, сообщения приходят в обе группы
Django Channels — Channels 1.0.3 documentation
channels.readthedocs.io