django开发-websocket的实现

今天介绍下如何在django中使用channels实现websocket。其实还可以使用dwebsocket实现websocket,这里不做介绍。

首先介绍一个概念ASGI。

ASGI异步网关协议接口,一个介于网络协议服务和Python应用之间的标准接口,能够处理多种通用的协议类型,包括HTTP,HTTP2和WebSocket。

然而目前的常用的WSGI主要是针对HTTP风格的请求响应模型做的设计,并且越来越多的不遵循这种模式的协议逐渐成为Web变成的标准之一,例如WebSocket。

ASGI尝试保持在一个简单的应用接口的前提下,提供允许数据能够在任意的时候、被任意应用进程发送和接受的抽象。并且同样描述了一个新的,兼容HTTP请求响应以及WebSocket数据帧的序列格式。允许这些协议能通过网络或本地socket进行传输,以及让不同的协议被分配到不同的进程中。

下面开始介绍下channels

channels是对django的扩展,使其可以支持WebSockets, chat protocols, IoT protocols,或者更多。channels基于ASGI。

下面开始介绍channels实现websocket的配置:

1.环境

python3.6 channels2.1.7 channels-redis2.3.3 django2.0.5 drf3.9.2

2.配置

其中test01是app名称 DjangoChannel2是项目名称

test01.routing.py:

django开发-websocket的实现

test01.consumer.py:

django开发-websocket的实现

DjangoChannel2.routing.py:

django开发-websocket的实现

DjangoChannel2.asgi.py:

django开发-websocket的实现

DjangoChannel2.settings.py:

django开发-websocket的实现

以上就是配置的过程。

3.前端index.html

django开发-websocket的实现

其中websocket请求url中

ws://127.0.0.1:8000/ws/status/1/

数字1可以表示不同客户端,也可以是2、3等数字。

经过上面的配置后,django中就可以实现websocket功能了。

今天就介绍到这里。有问题环境私信交流。


分享到:


相關文章: