python之websocket

作者: 我爱学python | 来源:发表于2019-06-10 15:51 被阅读38次

一、websocket

   WebSocket协议是基于TCP的一种新的协议。WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符。它实现了浏览器与服务器全双工(full-duplex)通信。其本质是保持TCP连接,在浏览器和服务端通过Socket进行通信。

 本文将使用Python编写Socket服务端,一步一步分析请求过程!!!

1. 启动服务端

启动Socket服务器后,等待用户【连接】,然后进行收发数据。

2. 客户端连接

当客户端向服务端发送连接请求时,不仅连接还会发送【握手】信息,并等待服务端响应,至此连接才创建成功!

3. 建立连接【握手】

请求和响应的【握手】信息需要遵循规则:

从请求【握手】信息中提取 Sec-WebSocket-Key

利用magic_string 和 Sec-WebSocket-Key 进行hmac1加密,再进行base64加密

将加密结果响应给客户端

注:magic string为:258EAFA5-E914-47DA-95CA-C5AB0DC85B11

请求【握手】信息为:

提取Sec-WebSocket-Key值并加密:

4.客户端和服务端收发数据

客户端和服务端传输数据时,需要对数据进行【封包】和【解包】。客户端的JavaScript类库已经封装【封包】和【解包】过程,但Socket服务端需要手动实现。

第一步:获取客户端发送的数据【解包】

解包详细过程:

第二步:向客户端发送数据【封包】

5. 基于Python实现简单示例

a. 基于Python socket实现的WebSocket服务端:

b. 利用JavaScript类库实现客户端

6. 基于Tornado框架实现Web聊天室

Tornado是一个支持WebSocket的优秀框架,其内部原理正如1~5步骤描述,当然Tornado内部封装功能更加完整。

以下是基于Tornado实现的聊天室示例:

相关文章

  • python之websocket

    一、websocket WebSocket协议是基于TCP的一种新的协议。WebSocket最初在HTML5规范...

  • Python WebSocket Client

    当WebSocket服务搭好之后,如何用Python调试呢? Python的WebSocket客户端有很多,这里推...

  • Python之WebSocket协议

    一、WebSocket理论部分 1、websocket是什么 Websocket是html5提出的一个协议规范,参...

  • 2019-01-17

    python websocket 应用总结 首先要了解websocket原理,知乎上有很多大神的答复,多看看就了解...

  • 2019-03-18

    python stomp订阅websocket 这两天被这个搞的头大,一般的订阅websocket都是没问题的,这...

  • Python websocket 实践

    正常http就够了,但是若是需要双向通信的话,websocket就会更加简单些。下面介绍python下的一些实践。...

  • python版websocket

    背景 目前看到实现websocket的框架的- django的channels- flask- sanic好奇,用...

  • Websocket操作字节序 之 服务端

    Websocket在JavaScript中操作字节序 之 客户端在上一篇文章中,把页面的websocket编码写好...

  • django websocket

    .Net Core 可以使用SignalR进行实时通讯,python可以使用websocket进行通讯,下面的文章...

  • python 原生实现websocket

网友评论

    本文标题:python之websocket

    本文链接:https://www.haomeiwen.com/subject/epmzxctx.html