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
第二步:向客户端发送数据【封包】

原文地址:https://www.cnblogs.com/big-handsome-guy/p/8661159.html

时间: 2024-10-11 01:27:13

websocket基本概念的相关文章

quick-cocos2d-x 学习系列之十二 关于websocket

quick-cocos2d-x 学习系列之十二 关于websocket 1.  概念 百度百科:WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 在浏览器中通过http仅能实现单向的通信,comet可以一定程度上模拟双向通信,但效率较低,并需要服务器有较好的支持; flash中的socket和xmlsocket可以实现真正的双向通信,通过 flex ajax bridge,可以在javascript中使用这两项功能. 可

websocket 初识

websocket 初识 前言 其实很早就知道了 websocket 这个概念了,像现在大火的直播等使用的就是 websocket.之前找爬虫工作,对面问我爬过 websocket 网站没,很汗颜,那时候还只是听说过.现在想了解一下,基于 JavaScript 语言. Websocket 是什么 websocket 是一种网络通信协议,运行在 TCP 协议之上. 对于传统的 HTTP 协议来说,通信只能由客户端发起,然后服务端响应.HTTP 协议做不到服务器制动向客户端推送信息.HTTP 协议的

最全spring boot视频系列,你值得拥有

================================== 从零开始学Spring Boot视频 ================================== àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share [截止到201

Ajax、反向Ajax和WebSocket 概念

Ajax 异步的JavaScript和XML(Asynchronous JavaScript and XML,Ajax),一种可通过JavaScript来访问的浏览器功能特性,其允许脚本向幕后的网站发送一个HTTP请求而又无需重新加载页面.Ajax的出现已经超过了十年,尽管其名字中包含了XML,但你几乎可以在Ajax请求中传送任何的东西,最常用的数据是JSON,其与JavaScript语法很接近,且消耗更少带宽.清单1给出了这样的一个例子,Ajax请求通过某个地方的邮政编码来检索该地的名称. 清

WebSocket简单使用(一) - 概念

背景: 前几天老大突然发现微信有个链接键盘的功能,我仔细想了下或许是使用WebSocket来实现的,又加上最近HTML5的呼声愈来愈高,觉得有必要研究下HTML5了. HTML5作为下一代WEB标准,拥有许多引人注目的新特性,如Canvas.本地存储.多媒体编程接口.WebSocket 等等.今天我们就来看看具有“Web TCP”之称的WebSocket. WebSocket的出现是基于Web应用的实时性需要而产生的.这种实时的Web应用大家应该不陌生,在生活中都应该用到过,比如新浪微博的评论.

websocket实战(1) 入门

1.WebSocket介绍 1.1 概念 WebSocket是HTML5中一系列新的API,或者说新规范,新技术.支持页面上使用Web Socket协议与远程主机进行全双工的通信.它引入了WebSocket接口并且定义了一个全双工的通信通道,通过一个单一的套接字在Web上进行操作. 1.2 websocket vs HTTP 首先,web技术发展经历了以下阶段. 静态页面(html) 动态页面(cgi,j2ee,php...) Ajax技术 comet技术(轮询) 1.2.1 实现方案对比 举个

使用 HTML5 WebSocket 构建实时 Web 应用

作为下一代的 Web 标准,HTML5 拥有许多引人注目的新特性,如 Canvas.本地存储.多媒体编程接口.WebSocket 等等.这其中有"Web 的 TCP "之称的 WebSocket 格外吸引开发人员的注意.WebSocket 的出现使得浏览器提供对 Socket 的支持成为可能,从而在浏览器和服务器之间提供了一个基于 TCP 连接的双向通道.Web 开发人员可以非常方便地使用 WebSocket 构建实时 web 应用,开发人员的手中从此又多了一柄神兵利器.本文首先介绍

理解WebSocket

WebSocket的动机是什么? 目前的Web通信使用的是HTTP协议,HTTP协议是基于TCP协议的应用层协议,HTTP协议的工作模式是request/response模式.在一次通信中,必须首先由client向server发起TCP连接,然后server接受该TCP连接请求,在TCP连接建立之后,首先由client发起HTTP request,然后server再发出HTTP response. ? 因此,在这种标准HTTP工作模式的约定下,server是不被允许发起一个TCP请求的,因此也就

一步步学WebSocket(1)声明式WebSocket

本节描述声明式WebSocket编程,可以与后一篇编程式WebSocket作对比学习: 首先上服务端: @ServerEndpoint("/chat") public class DeclarativeServer {     @OnOpen       public void onOpen(Session session) {           System.out.println("Somebody is coming!");      }