问题标签 [django-channels]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Django Channels WebSocketProtocol 错误
我正在尝试使用频道建立一个 django 实例。我已经成功部署在一个开发环境中,我可以使用 django runserver 将数据服务到本地主机。在我的 prod 环境中,我使用 apache 作为启用了 mod_proxy_wstunnel 的 proxypass 服务器。服务器启动正常,但是当我在浏览器中打开时,在 runserver 控制台中出现以下错误:
我相关的 apache 配置是这样的:
我试图在 http_protocol 文件中隔离问题,它似乎与协议对象有关。我在这里想念什么?
django-channels - Django Channels Group/channel_session 是如何工作的?
似乎 Group 和 channel_session 可以跨多个消息会话和消费者持续存在。Channels 是如何做到这一点的?
我想设置一个长期存在的对象,就像每个消费者都可以访问的全局对象。
javascript - Django 频道 - 回声示例不起作用
我正在按照文档站点中的说明进行操作,但是我陷入了 echo 示例,websocket 已正确创建并且已连接到服务器,但是当我向服务器发送任何内容时,我没有得到任何响应(在示例中说我应该看到一个警报窗口,其中包含我发送到套接字的相同消息,但我没有,虽然我已经更改了 console.log 的警报但仍然),我做错了什么?
在settings.py 中:
在routing.py 中:
在消费者.py中:
在 asgi.py 中
然后我运行:python manage.py runserver,在我的浏览器中,我转到服务器 url,在控制台中输入以下内容:
同样,此时我应该看到一个警报窗口(或 console.log 消息),但我什么也没得到。
我提出的请求处于待处理状态(尽管我在这里阅读并且第一条评论说这是正常的)
服务器输出如下所示:
每次我尝试通过浏览器中的 websocket 发送一些东西时,服务器只打印 CONNECT 但没有显示来自 js 控制台的日志。
编辑:我已经在浏览器中针对 echo.websocket.org 测试了 websockets,我得到了预期的答案:
django - Django Channels 代码适用于 Chrome,但不适用于 Firefox
我正在使用 Django 和 Channels(Django 的新 websocket 实现)编写一个聊天应用程序。用户首先进入等候室,直到至少有 3 人加入,然后他们被引导到聊天室。该代码适用于 Chrome,但不适用于 Firefox。下面是它的工作原理:
- 在新连接到通道/websocket 时,服务器会检查是否至少三个人在等候室(在 consumer.py 中)。
- 如果至少有三个人在场,它会使用 Group 函数向频道/websocket 广播一条消息,告诉他们重定向。
- 客户端接收到消息并在 javascript 中执行重定向。
以下是我为调试问题所采取的步骤:
- 该代码适用于 Firefox 以外的浏览器(例如 Chrome)。
- 如果到达等候室的前两个客户端是 Firefox,而最后一个(触发服务器)是 Chrome,则该代码有效。它重定向所有三个客户端。
- 如果前两个客户端是 Chrome,最后一个客户端(触发服务器)是 Firefox,它会重定向 Chrome 客户端,而不是 Firefox 客户端。
- 问题不太可能与运行重定向的 javascript 有关,因为用简单的警报消息替换代码(在客户端收到 Group 语句后)在 Firefox 中也不起作用(但在 Chrome 中起作用)。当 Firefox 客户端是触发服务器的客户端时,就好像 Firefox 客户端永远不会收到 Group 消息。
- 聊天使用频道并适用于包括 Firefox 在内的所有浏览器。它成功连接、发送消息、接收消息和断开连接。
基于这些调试步骤,我认为当 Firefox 发起执行组重定向的服务器代码时出现问题。您对可能出现的问题有什么建议吗?你有什么建议可以帮助确定问题吗?
这是我认为导致问题的 consumer.py 中的代码:
这是执行重定向的 javascript 代码:
python - 未处理 Django 频道 websocket.receive
我正在尝试通过文档实现 Django 频道。
所以就像我正在制作的文档consumers.py
并且routing.py
作为
在我的settings
文件中我添加了channel_layers
因此,当我运行服务器并在 chrome 控制台中发送以下内容时
我可以在 manage.py 控制台中看到 Websocket 连接正常工作并建立了连接,但该receive
部分未处理且未在控制台中看到,因此不会引发来自 js 代码的警报。那么我做错了什么?
django - 让 Django REST framework 和 Django Channels 玩得很好
我想让 Django REST 框架与 Web 套接字一起工作,并遇到了 Django Channels。我可以在 REST 框架之上构建通道吗?
我在这里读到它是 WIP,但是我想知道是否有一种简单的“轻松”方式将两者联系在一起。任何建议表示赞赏,我对 Django 还是很陌生。
python - 查找组中添加的所有用户(reply_channels)(Django 频道)
我正在使用 Django 频道组来构建一个聊天系统,并希望获取聊天室中的所有用户。
组提供这些方法:
Group("group_name").add(message.reply_channel)
Group("group_name").discard(message.reply_channel)
Group("group_name").send({"text": "My group message",})
但是没有类似的东西我可以在 Group 中找到所有用户(reply_channel)。
谢谢
django - Django Channel web sockets - 将消息附加到 Model.objects
最近,我一直在研究将 Web 套接字集成到 Django 中。根据文档,使用Channels是要走的路。
给定一个说明性模型查询
我想让我的 Web 应用程序连接到 Web 套接字服务器。当 Web 套接字服务器接收到消息时,它应该将该消息广播到客户端建立的特定套接字连接子集。
客户端(即网络浏览器)一旦收到广播消息,它应该将其附加到Request.objects。从那里开始,所有查询的列表应该使用 Django 模板自动更新,并在其中定义模型 - 无需强制用户显式刷新它。
因此,我的问题是:(我)使用通道(如果这是在 Django 中处理 Web 套接字连接的首选方式),我如何将新到达的Query对象附加到Query.objects - 而不将对象存储到数据库中因为在发送到web socket服务器之前已经插入了,(二)刷新对应的Django模板的内容。
python - Daphne 服务器无法通过 HTTPS 连接到 websocket
我正在 Openshift 云上部署一个 Django 项目。该项目使用通道和 Websockets 使其异步工作。问题是我无法成功地将浏览器中的 websockets 连接到我在服务器端运行的 Daphne 服务器。
我正在使用 django (python2.7) 和redis墨盒使其运行。
我使用的 post_deploy 脚本如下所示:
这是我的 Django 配置。在settings.py 中:
在routing.py 中:
在消费者.py中;
在客户端,我正在运行以下代码:
请注意,由于此文档,我在 Daphne 设置和 WebSockets 设置中使用了端口 8443 。此外,Daphne 绑定到 OPENSHIFT_HOST 地址,因为在 Openshift 中无法将其绑定到 0.0.0.0(权限问题)
输出如下所示:
在客户端一切看起来都不错,但如果你还记得的话,在consumer.py中我有这个:
因此,在我的终端中,服务器应该打印出类似:“接收:来自”的内容,但事实并非如此。我在这里缺少什么?
tl; dr:客户端 websocket 看起来连接正确,但服务器没有打印出消息来确认它。
python - django 频道 message.reply_channel 无属性发送
我一直试图了解 Django 的频道,但我无法将我的消息发送到我的 websocket。
这是我的consumers.py
我的routing.py
我得到了错误AttributeError: 'NoneType' object has no attribute 'send'
。然而,它确实获得了 PInformation 对象,因此它确实“有点”工作。我在保存对象后立即调用它。
你能给我一些提示吗?入门指南就像我尝试的那样使用它。