分析dwebsocket的源码过程

 

前言

  dwebsocet 是python django的websocket库,github地址:https://github.com/duanhongyi/dwebsocket

本章是对dwebsocet的一个源码分析.

开胃菜

在django视图里,只需要这么定义,就搭建了一个websocet端。

分析开始

1.打开

accept_websocket 源码,是这样。

不要被它吓到,其实就是动态加载中间介,我们打开红箭头处的WebSocketMiddleware,代码是这样

数字3 是当一个request请求过来时还没有到视图层,就要开始处理,数字1.是动态导入模块 2.是创建个 socket连接..详细就不写了。

现在我们假设websocet连接过来到这个层,已经建立个 socket对象,接下来的步骤就是要接收用户请求。

process_view 是在视图前调用,它这的目的就是用钩子,回调接收socket连接。此时我们应该就可以接收客户端发过来的数据了。就回到了第一个图的开胃菜哪。

用for 去取request.websocket对象,很多人应该没搞清楚,它为什么能无限制的for, 而不被结束。原因在这里

websocket这个对象的父类,写了个__iter__迭代对象,其实和客户端用的socket对象道理是一样的,要保持长连接,你就的while True.

 

总结:

     大致整个流程是这个样子。

附一张自己分析的草图,留着自己回忆.

 

 

 

 

 

 

 

 


 

posted @ 2017-06-23 11:33  放在垃圾桶里  阅读(2351)  评论(0编辑  收藏  举报