Форум сайта python.su
есть хороший пример на http://channels.readthedocs.io/en/stable/index.html обмена соощений между группами
нужно создать 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),
]
//Группа 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();
Офлайн