I have been following Django channels tutorial, but I am stuck on why my application is not working. Whenever I change the database through the django ORM, I am not getting any updates on my browser.
routing.py
from channels import route_class
from values.consumers import Secondmultiplexer
channel_routing = [
route_class(Secondmultiplexer, path='^/stream2/?$')
]
models.py
from django.db import models
from channels.binding.websockets import WebsocketBinding
class SimpleStock(models.Model):
ticker = models.CharField(max_length=30, primary_key=True)
current_price = models.FloatField(default=0)
class SimpleStockBinding(WebsocketBinding):
model = SimpleStock
stream = "stocks"
fields = ["ticker", "current_price"]
@classmethod
def group_names(cls, instance):
return ["stocks-updates"]
def has_permission(self, user, action, pk):
return True
consumers.py
from channels.generic.websockets import WebsocketDemultiplexer
from .models import SimpleStockBinding
class Secondmultiplexer(WebsocketDemultiplexer):
consumers = {
"stocks": SimpleStockBinding.consumer,
}
groups = ["binding.values"]
index.html
{% extends "base.html" %}
{% block title %}Databinding Example{% endblock %}
{% block header_text %}Databinding Example{% endblock %}
{% block content %}
{% endblock %}
{% block extra_body %}
<script>
$(function () {
var second_path = "/stream2/";
console.log("Connecting to " + second_path);
var secondWebSocketBridge = new channels.WebSocketBridge();
secondWebSocketBridge.connect(second_path);
secondWebSocketBridge.listen();
secondWebSocketBridge.demultiplex('stocks',function(payload, streamName) {
console.log(payload);
});
});
</script>
{% endblock %}
asgi.py
import os
from channels.asgi import get_channel_layer
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "databinding.settings")
channel_layer = get_channel_layer()