我尝试使用 channel 但不起作用 这是consumer.py
def ws_connect(message, cat_id):
try:
cat = Categories.objects.get(pk=cat_id)
except Categories.DoesNotExist:
pass
Group('cat-1').add(message.reply_channel)
def ws_diconnect(message, cat_id):
try:
cat = Categories.objects.get(pk=cat_id)
except Categories.DoesNotExist:
pass
Group('cat-1').discard(message.reply_channel)
这是routing.py:
channel_routing = [
route('websocket.receive', ws_connect, path=r'^/liveupdate/(?P<cat_id>\d+)/'),
route("websocket.disconnect", ws_diconnect, path=r'^/liveupdate/(?P<cat_id>\d+)/'),
]
这是信号.py:
@receiver(post_save, sender=Tender)
def send_update(sender, instance, created, raw, using, **kwargs):
print '>>>>>>>>>>>>>>>>>>>>>>>>>>>>', instance, '2', raw, '3', using, '4', kwargs
data = json.dumps(
{'ministry': 'hisham',})
Group('cat-1').send({'tender': data,})
print 'Done'
这里是 JavaScript :
<script type="application/javascript">
var ws_scheme = window.location.protocol == "https:" ? "wss" : "ws";
alert(ws_scheme +"://" + window.location.host + "/liveupdate/1/");
var socket = new WebSocket(ws_scheme +"://" + window.location.host + "/liveupdate/1/");
socket.onmessage = function(e) {
alert(e.data);
};
socket.onopen = function() {
console.log("Connected to socket");
};
socket.onclose = function() { console.log("Disconnected to socket"); }
</script>
当我试图保存招标信号火但浏览器中没有任何内容时 即没有数据警报 我的代码有什么问题 任何想法
最佳答案
使用websocket.connect代替websocket.receive。当客户端向服务器发送数据时使用接收。
route('websocket.connect', ws_connect, path=r'^/liveupdate/(?P<cat_id>\d+)/'),
何时使用文本作为 key 发送数据而不是投标。
Group('cat-1').send({'text': data,})
关于javascript - django channel 不工作 它是如何工作的 我已阅读文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37872611/