簡體   English   中英

如何使用 django-channels 2 處理消息?

[英]How to process messages with django-channels 2?

在我的 Django 項目中,我創建了一個通知應用程序,它檢測特定模型何時被保存並向所有客戶端推送通知(基於https://arunrocks.com/understanding-django-channels/https://github.com /arocks/channels-example )。 我已將代碼更新為 Channels 2,現在我遇到了 javascript 包裝器的問題,該包裝器已在 django-channels 2 中刪除( 如何使用通道 websocket 在 Django 中定位 websocketbridge.js?

在我有一個處理消息的腳本之前:

<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 更新過他/她的代碼? 如果是這樣,請你提供一個例子。

非常感謝您的幫助。

通道 v2 不再直接支持舊包裝器的許多功能

streamaction的概念。

您可以自己執行此操作(在您的使用者和 js 代碼中)。

或者有一個庫(免責聲明我是作者) https://github.com/hishnash/djangochannelsrestframeworkhttps://github.com/hishnash/channelsMultiplexer結合使用時,提供了來自 channelsV1 的action + stream概念

你也可以在它旁邊使用這個 js lib https://github.com/theY4Kman/dcrf-client

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM