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);
我正在尝试为我的 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);