我现在正在使用React和Redux作为前端以及Django作为后端来构建应用程序。我想要实现的是,每当最终用户上传文件时,与此文件相关的所有最终用户都应收到通知。
我正在考虑使用websocket / socket.io,但不确定是否可以在Django上正常使用。还是使用其他任何技术来实现消息通知功能的经验或建议?
答案 0 :(得分:0)
一个简单的Google搜索显示了Django Channels
Channels是一个采用Django并将其功能扩展到HTTP以外的项目,以处理WebSocket,聊天协议,IoT协议等。它基于称为ASGI的Python规范构建。
答案 1 :(得分:0)
使用javascript中的field_field.files[0].file.slice()
方法,您可以通过websocket批量发送文件。使用field_field.files[0].size
,您可以获取总大小,然后将已发送的总大小与文件的大小相除,以构建进度条。确保将文件写操作包装在@sync_to_async
装饰器中,否则将阻塞事件循环。该方法是Channels的一部分,可以在Asgiref.
Channels Redis可用于通知任何或所有用户已发生事件,例如正在上传文件。