问题标签 [django-channels-presence]

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.

0 投票
4 回答
8205 浏览

django - 是否可以列出存储在组中的频道?

是否可以使用 django-channels 访问添加到组中的频道列表?

编辑:

我试图实现的是访问所有频道的会话,例如连接用户列表。

到目前为止,我使用了一个基于数据库的系统来列出连接。但是如果服务器在没有执行我的 ws_disconnect 消费者的情况下关闭,这些连接对象将保留在数据库中,我不希望这样。

编辑2:

要列出已连接的用户,我发现django-channels-presence. 我会测试它。

0 投票
1 回答
669 浏览

django - 如何在 Django 频道的连接功能中发送房间名称

我的程序中有几个房间。每个用户都可以连接到这些房间并发送消息。对于每个房间,我都有一组。我想在连接功能中为这些组指定房间名称。但我不知道如何在连接功能中发送房间名称。

0 投票
1 回答
1361 浏览

django - django-channels:跟踪“房间”中的用户

TL;DR - 我如何维护每个房间中的用户列表,以便我可以将该数据发送到前端以显示该房间中的参与者列表。

我正在设计一个协作 Web 应用程序,它使用 django-channels 在浏览器和服务器之间进行 websocket 通信。一个房间可以由多个用户加入,并且每个用户都应该知道房间中的每个其他用户。我将如何使用 django-channels (v2) 实现这一目标?

我已经浏览了文档和一些在线可用的示例项目,但它们都没有添加类似的功能。我也知道,django-channels-presence但该项目似乎没有得到积极维护,所以我并没有真正费心研究使用它的示例。

到目前为止,这是我想出的:

- 对于每个房间,我在数据库中创建一个对象,这些对象可以跟踪房间中的用户。因此,例如在 WS 消费者的connect()方法中,我可以进行get_or_create_room()调用和room.add_participant(self.user_name)(或从范围中获取它),并且在该disconnect()方法中我可以将自己从房间中移除。然而,这个问题是我最终可能会创造竞争条件吗?我认为?此外,由于我从 ORM 中获取对象,我必须确保每次在使用该对象之前,我都必须从数据库中重新获取它,因为它可能(并且将会)很快过时。这似乎一点也不理想。

- 我能想到的另一种方法是将数据附加到self.channel_layer消费者中,我可以在其中setattr(self.channel_layer, f'users_{room_id}', {})为每个进入和离开的用户执行类似的操作并维护此字典。这听起来又不是很安全,我没有看到有人使用它,所以我不确定。

对此的任何帮助将不胜感激。如果有人能指点我,我还想看看现有的应用程序是如何做到这一点的?

0 投票
1 回答
538 浏览

python - 如何在 django 频道中设置连接超时?

如果几秒钟没有响应,Django 通道会断开客户端。但我找不到在哪里设置这个时间限制。我检查了这个问题。它说它将是可配置的。但我找不到在哪里设置该限制。谢谢你

0 投票
0 回答
115 浏览

python-3.x - 如何在 django 频道中为不同用户在同一组上发送不同的消息

我正在尝试构建一个实时机票预订应用程序,因此我想向用户显示实时座位预订状态。

例如; 我有user1user2连接到一个组reservation-1

Now when the user1selects the ticket in group reservation-1the seat status will be converted to selected and the message should be broadcasted to all the users connected to the same group with the status of unavailable for that particular seat. 但对于 user1,它应该是选中的状态。

我的 JavaScript 代码实现:

我使用 django-channels 的 Django 服务器端消费者代码:

我正在使用 channel_redis 进行群组消息传递。我对通道层的设置配置是:

更新

我正在使用 django-channels-presence 来确定用户在同一组(房间)中的连接。有没有办法向同一个连接组中的每个用户发送特定消息?

高度赞赏有关可扩展的更好代码实现的建议。

0 投票
0 回答
72 浏览

django - channels_presence.Presence.user:(fields.E300)字段定义了与模型'auth.User'的关系,它要么未安装,要么是抽象的

我正在尝试在我的项目中使用 django channels_presence,但我的用户模型存在于另一个名为 auth 的项目(微服务架构)中,这给了我错误:

如何在同一个项目中使用没有用户模型的 channels_presence?

0 投票
1 回答
41 浏览

sockets - Django 在导入通道上变得同步

在我的项目(installed_apps)中包含频道时,它已经变得同步了。我正在使用 django 3.2.4。如果我删除这些频道并尝试,我的 django 服务器能够异步处理多个请求(当我从邮递员那里访问时)。任何形式的帮助将不胜感激。

提前致谢!

0 投票
0 回答
120 浏览

django-channels - 当同时创建 200 个房间时,django 频道服务器变慢或没有响应

我是 django 频道的新手,我根据 django 频道文档创建了一个聊天应用程序,并且成功创建了它。但是当我的频道数量增加到 200 多个(意味着 200 人在不同的房间聊天)时,服务器开始变慢,我们可以说它停止响应。在这种情况下请帮助我。

在此处输入代码

#setting.py 文件