Redis 和频道 Windows

Redis and channels with Windows

我正在尝试为我的 consumers.py 获取一个 var 以实时向客户端发送数据,就像函数 API 调用和 returns 向浏览器发送数据一样。

我知道通道需要 Redis 才能运行,但为什么呢?为什么我们不能将构建的列表传递给消费者 class 或与此相关的任何变量?来自另一个答案:存储不同消费者实例相互通信所需的必要信息。但是如果我只使用一个 websocket 连接,并且只允许一个用户一次登录?这将仅在本地托管并且功能在 consumers.py 之外 returns 订阅组的数据可能是我需要这些的地方。

我是不是遗漏了什么或者 redis / memurai 是必须的吗?我只是忍不住觉得有更简单的方法。

我最终使用了服务器端事件 (SSE),特别是 django-eventstream,到目前为止它运行良好,因为我不需要客户端与服务器交互,对于聊天应用程序来说这不会工作。

Eventstream 在 /events/ 处创建端点,客户端可以连接并接收流式 http 响应。

从externalFunc.py发送数据:

send_event('test', 'message', {'text': 'Hello World'})

HTML 页面中的事件侦听器:

var es = new ReconnectingEventSource('/events/');

es.addEventListener('message', function (e) {
    console.log(e.data);

    var source = new EventSource("/events/")

    var para = document.createElement("P");
    const obj = JSON.parse(event.data)
    para.innerText = obj.text;
    document.body.appendChild(para)

}, false);

es.addEventListener('stream-reset', function (e) {
}, false);