在我的Django项目中,我创建了一个通知应用程序,它可以检测何时保存了特定的模型,并将通知推送到所有客户端(基于https://arunrocks.com/understanding-django-channels/和https://github.com/arocks/channels-example )。我已经将我的代码更新到了Channels 2,现在我遇到了一个javascript包装器的问题,这个包装器已经在django-channel 2(How to locate websocketbridge.js in Django using channels websocket?)中被移除了。
在我有一个处理消息的脚本之前:
<script>
document.addEventListener('DOMContentLoaded', function() {
const webSocketBridge = new channels.WebSocketBridge();
const nl = document.querySelector("#notifylist");
webSocketBridge.connect('/notifications/');
webSocketBridge.listen(function(action, stream) {
console.log("RESPONSE:", action);
if(action.event == "New User") {
var el = document.createElement("li");
el.innerHTML = action.text;
nl.appendChild(el);
}
})
})
</script>
这个脚本不再工作了。他们建议用ReconnectingWebSocket.js替换WebSocketBridge.js,但我不知道如何修改我以前的脚本才能使用ReconnectingWebSocket.js。
有人使用ReconnectingWebSocket更新过他/她的代码吗?如果是这样,你能提供一个例子吗?
非常感谢您的帮助。
发布于 2020-02-21 03:08:14
channels v2不再直接支持旧包装器的许多功能
即stream
和action
的概念。
你可以自己做这件事(在你的消费者和js代码中)。
或者有一个lib (免责声明,我是作者) https://github.com/hishnash/djangochannelsrestframework,当与https://github.com/hishnash/channelsmultiplexer结合使用时,它提供了来自channelsV1的action
+ stream
概念
你也可以同时使用js lib https://github.com/theY4Kman/dcrf-client。
https://stackoverflow.com/questions/60315835
复制相似问题