通过websocket进行长连接通信
2.什么是WebSocket?Websocket是一种在单个TCP连接上进行全双工通信的协议,在Websocket协议中,没有
Request和Response的概念,连接一旦建立就建立了持久连接,双向可以随时向对方发送消息
3.Websocket的概念WebSocket 是一种在单个TCP连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。
在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接, 并进行双向数据传输。
4.Websocket的优点,缺点和应用场景优点:
支持双向通讯,实时性更强;
数据格式更轻量,性能开销小,通讯高效;因为http协议每次都要携带完整的头部,但是websocket在连接建立之后,从服务端到客户端只需要携带2-10个字节的头部,而从客户端到服务端也只需要2-10个字节的头部以及4个字节的掩码;
支持扩展,用户可以扩展协议或者实现自定义好的子协议(比如支持自定义压缩算法等),美剧硅谷中的pied piper的压缩算法应用于直播技术
缺点:
少部分浏览器可能不支持,浏览器支持的程度与方式有区别;
长连接对后端业务的代码稳定性要求更高,后端推送功能相对复杂;
成熟的 HTTP生态下有大量的组件可以复用,WebSocket较少;
应用场景:
即时聊天通讯,网站消息通知,
在线协同编辑,如腾讯文档;
多玩家在线游戏,视频弹幕,股票基金实时报价;
5.简单配置websocket的第三方模块
- 首先,安装channels,注意版本:
pip install channnels==2.3
2. 在项目同名的应用下,操作
INSTALLED_APPS =(
'django.contrib.auth',
'django.contrib.contenttypes,
'django.contrib.sessions',
'channels',
)
比如我的项目名是job_demo,那么相对路径就是job_demo/job_demo/setting.py.
setting.py里配置,将我们的channels加入INSTALLED_APP里。
继续在setting.py中添加:
ASGI_APPLICATTON = 'shixun.asgi.application'



