python之websocket【2020-12-27】 【人工智能】 一、websocket WebSocket协议是基于TCP的一种新的协议。WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符。它实现了浏览器与服务器全双工(full-duplex)通信。其本质是保持TCP连接,在浏览器和服务端通过Socket进行通信。 本文将使用Python编写Socket服务端,一步一步分析请求过程!!! 1. 启动服务端import socket 启动Socket服务器后,等待用户【连接】,然后进行收发数据。 2. 客户端连接当客户端向服务端发送连接请求时,不仅连接还会发送【握手】信息,并等待服务端响应,至此连接才创建成功! 3. 建立连接【握手】import socket 请求和响应的【握手】信息需要遵循规则:
注:magic string为:258EAFA5-E914-47DA-95CA-C5AB0DC85B11 请求【握手】信息为: GET /chatsocket HTTP/1.1 提取Sec-WebSocket-Key值并加密: import socketimport base64import hashlib 4.客户端和服务端收发数据客户端和服务端传输数据时,需要对数据进行【封包】和【解包】。客户端的JavaScript类库已经封装【封包】和【解包】过程,但Socket服务端需要手动实现。 第一步:获取客户端发送的数据【解包】 info = conn.recv(8096) 解包详细过程:
第二步:向客户端发送数据【封包】 def send_msg(conn, msg_bytes):
5. 基于Python实现简单示例a. 基于Python socket实现的WebSocket服务端: #!/usr/bin/env python b. 利用JavaScript类库实现客户端 6. 基于Tornado框架实现Web聊天室Tornado是一个支持WebSocket的优秀框架,其内部原理正如1~5步骤描述,当然Tornado内部封装功能更加完整。 以下是基于Tornado实现的聊天室示例: #!/usr/bin/env python |
                               |
copyright©2018-2024 gotopie.com