• Html5学习笔记——Websocket


    Websocket是Html5出来的一个新协议,但它还是依附于Http协议。在传统的Http协议中,请求都是由客户端发起的,而且一个请求对应一个服务器的回应,对于客户端来说发出的请求=收到的回应。Websocket允许服务器主动向客户端推送消息。

    Websocket的握手

    在客户端发出的Websocket请求中,有一些字段是不同于传统的Http协议字段的,这些字段就告诉服务器,我要发起Websocket连接了。

    GET /chat HTTP/1.1
    Host: server.example.com
    Upgrade: websocket                            (Websocket)
    Connection: Upgrade                           (Websocket)
    Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==   (Websocket)
    Sec-WebSocket-Protocol: chat, superchat       (Websocket)
    Sec-WebSocket-Version: 13                     (Websocket)
    Origin: http://example.com
    

    然后服务器会发送回应,状态码变成101,表示协议从Http切换到Websocket。

    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
    Sec-WebSocket-Protocol: chat
    

    Websocket解决了之前的哪些问题

    在Websocket出现之前,客户端要保持与服务器的消息同步有两种方式:轮询长轮询
    在轮询方式中,客户端发起ajax请求,服务器接收到请求,立马开始回应,不管有没有产生客户端想要的数据。这种方式比较浪费宽带、服务器资源。
    在长轮询方式中,客户端发起ajax请求,服务器接收到请求,不急着回应,而是看看有没有客户端想要的数据,若有,就回应;若没有,连接就保持着直到有数据。这种方式需要服务器有一定的并发能力。
    (从形状上看,轮询倒一下就很像长轮询)

    【Reference】

    1. 知乎 https://www.zhihu.com/question/20215561
  • 相关阅读:
    Django的ORM
    Django model中设置多个字段联合唯一约束(多对多)
    Django 基本命令
    Django中使用Microsoft SQL SERVER
    pycharm django 再建一个app
    转载:Emmet使用手册
    线程示例(1)
    用socketserver实现简单的FTP
    python习题1-最大的不可支付邮资问题
    【实例:利用Django管理后台管理IP地址】(六)django_apscheduler实现定时检测IP使用情况
  • 原文地址:https://www.cnblogs.com/season-peng/p/6804819.html
Copyright © 2020-2023  润新知