金融棋牌网站建设,网络设计方案的组成部分,株洲搜索引擎优化,做淘宝客新增网站推广在开发一些前端页面的时候#xff0c;总是能接收到这样的需求#xff1a;如何保持页面并实现自动更新数据呢#xff1f;以往的常规做法#xff0c;是前端使用定时轮询后端接口#xff0c;获取响应后重新渲染前端页面#xff0c;这种做法虽然能达到类似的效果#xff0c;…在开发一些前端页面的时候总是能接收到这样的需求如何保持页面并实现自动更新数据呢以往的常规做法是前端使用定时轮询后端接口获取响应后重新渲染前端页面这种做法虽然能达到类似的效果但是依然有很多缺点缺点就不在这里说了感兴趣的小伙伴可以自行查阅一下。现在让我们回忆一下我们有没有想过是否有一种技术服务器可以主动将数据推送给客户端进行渲染而不再是客户端向服务器发出请求等待返回结果呢接下来让我们一起了解weboskcet。
websocket是HTML5规范的一个部分它借鉴了socket的思想实现了浏览器与服务器全双工通信达到了即时通信的效果。websocket协议基于TCP协议实现包含初始的握手过程以及后续的多次数据帧双向传输过程避免服务器频繁打开多个HTTP连接从而能更好的节省服务器资源和带宽提高工作效率与资源利用率
websocket的通信规范首先浏览器通过HTTP协议发出websocket的连线请求服务器进行响应这个过程称为握手握手完成后客户端和服务器之间建立一个类似TCP的连接使用websocket协议从而实现它们之间的通信。
客户端的简单示例
// 创建websocket var ws new WebSocket(ws://www.example.com);
// 连接成功时触发 ws.onopen function(e) { console.log(Connectiong open ...); // 发送消息 ws.send(Hello WebSocket); };
// 接收消息时触发 ws.onmessage function(e) { console.log(Received Message: e.data); ws.close(); };
// 关闭连接时触发 ws.onclose function(e) { console.log(Connection closed); };
// 出现错误时触发 ws.onerror function(e) { console.log(error); };
服务端的简单示例
# 创建websocket服务端 from tornado.websocket import WebSocketHandler
class wsHandler(WebSocketHandler): # 保存连接的用户用于后续推送消息 connect_users set() # 已与客户端建立连接 def open(self): print(开启WebSocket opened) self.connect_users.add(self) # 关闭客户端连接 def on_close(self): self.connect_users.remove(self) # 接收到消息 def on_message(self, message): self.write_message(接收到客户端的消息{}.format(message)) # 所有用户发送消息 classmethod def send_demand_updates(cls, message): # 使用classmethod可以使类方法在调用的时候不用进行实例化 # 给所有用户推送消息此处可以根据需要修改为给指定用户进行推送消息 for user in cls.connect_users: user.write_message(message) # 允许WebSocket的跨域请求 def check_origin(self, origin): return True
if __name__ __main__: # 调用 wsHandler。send_demand_updates(服务端发送给客户端的消息)