zoukankan      html  css  js  c++  java
  • websocket基本概念

    (1)websocket 协议 与 http协议

    websocket 协议,双工通道  socket连接不断开
    
    http 协议 ,只能请求响应 (用户主动获取)   socket连接断开
    
    都是基于socket
    
                ---- 客户端都是浏览器
    

    (2)轮询

    	一般用户量少的 都是用 websocket来做即时通讯
    
    轮询 ---  一直发请求,定死的,2秒钟取一次
    
    长轮询 --- 请求之后,没有新消息,夯住,30秒之内没有新消息,断开
                重新请求,如果有新消息,立刻返回消息
    

    (3) ws 协议小例

    创建 socket 服务端
    
            import socket
            sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
            sock.bind(('127.0.0.1',8002))
            sock.listen(5)
            conn,addr = sock.accept()
            data = conn.recv(1024)
            print(data)
    
     创建 scoket 客户端
    
         <script type="text/javascript">
                var socket = new WebSocket("ws://127.0.0.1:8002")
        //        浏览器 会立即创建一个 socket对象 ,连接
            </script>
        </body>
    
    
    
    但是服务端 必须返回固定格式的内容给浏览器 ,才能保证 正常的连接
    【握手信息】魔法字符串
    

    (5) WebSocket协议是基于TCP的一种新的协议。

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

    请求和响应的【握手】信息需要遵循规则:
    
        从请求【握手】信息中提取 Sec-WebSocket-Key
        利用magic_string 和 Sec-WebSocket-Key 进行hmac1加密,再进行base64加密
        将加密结果响应给客户端
    
    注:magic string为:258EAFA5-E914-47DA-95CA-C5AB0DC85B11
    

    (6) tornado 实现 websocket

    Tornado是一个支持WebSocket的优秀框架,当然Tornado内部封装功能更加完整。
    

    (7)客户端和服务端传输数据时,需要对数据进行【封包】和【解包】

    客户端的JavaScript类库已经封装【封包】和【解包】过程,但Socket服务端需要手动实现。
    
    第一步:获取客户端发送的数据【解包】 Payload
    第二步:向客户端发送数据【封包】
  • 相关阅读:
    Autofac框架详解 转载https://www.cnblogs.com/lenmom/p/9081658.html
    .NET Core开源组件:后台任务利器之Hangfire 转载 https://www.cnblogs.com/chenug/p/6655636.html
    ASP.NET Core项目目录结构介绍
    使用cookie来做身份认证 转载https://www.cnblogs.com/sheldon-lou/p/9545726.html
    Windows7 64位安装最新版本号MySQLserver
    [个人开发人员赚钱九]做一个日收入10元的APP!
    排序算法之高速排序
    IOS使用Charts
    JS检查浏览器类型和版本号
    【视频教程】捷微开发视频系统讲课-陆续更新
  • 原文地址:https://www.cnblogs.com/big-handsome-guy/p/8661159.html
Copyright © 2011-2022 走看看