随笔分类 - Django channels
摘要:settings.py配置 # 存储在内存里 CHANNEL_LAYERS = { "default": { "BACKEND": "channels.layers.InMemoryChannelLayer", } } # 存储在redis 安装:pip3 install channels-redi
阅读全文
摘要:self代表当前用户客户端与服务端的连接对象,比如两客户端发来了两个连接,我们可以把两个连接放在一起 # 定义全局变量 CONN_List = [] class LiveConsumer(WebsocketConsumer): def websocket_connect(self, message)
阅读全文
摘要:客户端主动向服务端发起websocket连接,服务端接收到连接后通过(握手) 客户端 websocket socket = new WebSocket('ws://127.0.0.1/ws/'); 服务端 def websocket_connect(self, message): # 有客户端向后端
阅读全文
摘要:Django默认不支持websockey,需要Django支持的话需要安装第三方组件 django channels 是django支持websocket的一个模块。 1.安装 pip3 install channels # 安装 2.settings.py配置 #INSTALLED_APPS 中注
阅读全文
摘要:websocket协议原理 1.WebSocket协议是基于TCP的一种新的协议。WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符。它实现了浏览器与服务器全双工(full-duplex)通信。其本质是保持TCP连接,在浏览器和服务端通过Socket进行
阅读全文
摘要:websockey的模式就是在于当前端向后端发送请求创建一个websocket链连接之后,连接默认不断开,前端和服务端就维护了一个连接,前端可以通过连接给服务端发消息,服务端也可以通过连接给前端发消息,实现了双向通信,也叫双工通道 原来的web中: http协议:无状态&短连接 客户端主动连接服务端
阅读全文
摘要:长轮询: 当服务器收到前端发来的请求后,服务器端不会直接进行响应,而是先将这个请求挂起,然后判断服务器端数据是否有更新。如果有更新,则进行响应, 如果一直没有数据,则到达一定的时间限制(服务器端设置)才返回,返回完之后,客户端再次建立连接,周而复始,基于事件的触发,一个事件接一个事件 长轮询处理流程
阅读全文
摘要:轮询:前端每隔固定时间向后台发送一次请求,询问服务器是否有新数据 轮询的工作流程 1.前端发送数据 2.后端接收处理数据 3.前端定时请求数据 4.后端返回新数据 一、发送-接收数据 // 前端 <div class="message" id="message"> <div> <input type
阅读全文
摘要:一、轮询 前端每隔固定时间向后台发送一次请求,询问服务器是否有新数据 缺点: 延迟,需要固定的轮询时间,不一定是实时数据 大量耗费服务器内存和宽带资源,因为不停的请求服务器,很多时候 并没有新的数据更新,因此绝大部分请求都是无效请求 二、长轮询 当服务器收到前端发来的请求后,服务器端不会直接进行响应
阅读全文
