Hi guys,
Been trying to get my head around this for ages now but still no luck,
hopefully
someone can point me in the right direction.
I'm trying to set up a Demultiplexer with a JsonWebsocketConsumer that sends
to a group. (There is only one stream in the Demultiplexer at the moment, but
I intend to add more).
The prints in each of the functions work when I interact with my app in the web
browser, but I'm having trouble getting a response in the browser via
websockets.
If I user multiplexer.send() then it works, but it only goes to a single
connection
(as you'd expect).
consumers.py
from channels.generic.websockets import JsonWebsocketConsumer,
WebsocketDemultiplexer
class DatabaseUpdateConsumer(JsonWebsocketConsumer):
strict_ordering = True
def connection_groups(self, **kwargs):
return ["updatedb_results"]
def connect(self, message, multiplexer, **kwargs):
print "Connected!"
multiplexer.group_send(multiplexer.__class__.__name__,
self.connection_groups(), {'text': "Connected!"})
def disconnect(self, message, multiplexer, **kwargs):
print("Stream %s is closed" % multiplexer.stream)
def receive(self, content, multiplexer, **kwargs):
print "Message received by server!"
multiplexer.group_send(multiplexer.__class__.__name__,
self.connection_groups(), {'text': "Message received by server!"})
class Demultiplexer(WebsocketDemultiplexer):
consumers = {
"updatedb_results": DatabaseUpdateConsumer,
}
index.html
{% extends "base.html" %}
{% block title %}Test Dashboard{% endblock %}
{% block content %}
<div id="currentCount">{{ job_detail|length }}</div>
<br>
{% for line in job_detail %}
<div id="{{ line.id }}">{{ line.job_number }}</div>
{% endfor %}
{% endblock %}
{% block javascript %}
<script>
const webSocketBridge = new channels.WebSocketBridge();
webSocketBridge.connect("ws:/development01:8000/ws/");
webSocketBridge.listen();
webSocketBridge.demultiplex('updatedb_results', function(data, stream) {
console.log(data);
});
</script>
{% endblock %}
routing.py
from channels import route_class
from dashboard.consumers import Demultiplexer
channel_routing = [
route_class(Demultiplexer, path="^/ws/"),
]
Can anyone tell me where I'm going wrong?
Thanks,
Dan
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/965e2ace-f7af-43d8-bf20-cac1745bb51e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.