Django channel 和 socket.io-client

标签 django socket.io

我是第一次尝试使用它们,并且想知道我是否朝着正确的方向前进。

这是我的理解,

socket.io 是 websocket 的包装器,当 websocket 不可用时,会回退到次优解决方案。

Django channel 也可以与 websocket 通信。
(我认为它将django转换为像系统一样的消息队列。尽管这种理解或误解应该会影响这个问题)

所以我尝试在服务器上使用 Django channel ,在客户端上使用 socket.io-client。

socket.io 有一个 api,看起来像

socket.on(类型, (有效负载)=> {})

而 Django channel 的形式为

message.reply_channel.send({ “文本”:json })

socket.on(type)的“文本”type

Django channel 和 socket.io-client 可以相互通信吗?

最佳答案

来自 Socket.IO 自述文件:

Note: Socket.IO is not a WebSocket implementation. Although Socket.IO indeed uses WebSocket as a transport when possible, it adds some metadata to each packet: the packet type, the namespace and the ack id when a message acknowledgement is needed. That is why a WebSocket client will not be able to successfully connect to a Socket.IO server, and a Socket.IO client will not be able to connect to a WebSocket server (like ws://echo.websocket.org) either. Please see the protocol specification here.

因此,您不应期望 Channels 直接与 Socket.IO 一起工作。 Global browser support for websockets is at 93% ,这可能足够高,只需使用 websocket API直接。

关于Django channel 和 socket.io-client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40149418/

相关文章:

mysql - Django 相当于 MySQL 的 FIND_IN_SET()

python - 如何为 Django 管理页面的功能编写测试?

javascript - 将 socket.io 与 React 结合使用

javascript - 如何在 Node.js 应用程序中排列文件?

python - 自定义 View 在带有 Elastic Search 的 Django Haystack 中不显示结果

database - 在 Django 中存储多个日期字符串的最佳方法是什么?

python - 保存 m2m 关系的 Django 问题

python - 如何将 python Socket.IO 与 Qt 集成

node.js - 尝试使用 Socket.IO 命名空间会导致 404 轮询错误

node.js - Socket.io 与 Rabbitmq 进行一对一聊天