| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> WebSocket -> 正文阅读 |
|
[网络协议]WebSocket |
为什么用WebSocket? WebSocket最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。 一共有 4 个事件:
事件顺序为:open → message → close。 建立 WebSocket
创建后立即连接,在连接期间,浏览器(使用 header)问服务器是否支持WebSocket ,如果支持WebSocket 那么通信就以 WebSocket 协议继续进行,该协议根本不是 HTTP。 new WebSocket(“wss://javascript.info/chat”) 发出的请求的浏览器 header 示例
如果服务器同意切换为 WebSocket 协议,服务器应该返回响应码 101:
这里 Sec-WebSocket-Accept 是 Sec-WebSocket-Key,是使用特殊的算法重新编码的。浏览器使用它来确保响应与请求相对应。 然后,就使用 WebSocket 协议传输数据,我们很快就会看到它的结构(“frames”)。它根本不是 HTTP。 数据传输
在浏览器里,我们仅直接使用文本或二进制 frames。 WebSocket .send() 方法可以发送文本或二进制数据。 socket.send(body) 调用允许 body 是字符串或二进制格式,包括 Blob,ArrayBuffer 等。不需要额外的设置:直接发送它们就可以了。 当我们收到数据时,文本总是以字符串形式呈现。而对于二进制数据,我们可以在 Blob 和 ArrayBuffer 格式之间进行选择。 它是由 socket.binaryType 属性设置的,默认为 “blob”,因此二进制数据通常以 Blob 对象呈现。 Blob 是高级的二进制对象,它直接与 < a >,< img > 及其他标签集成在一起,因此,默认以 Blob 格式是一个明智的选择。但是对于二进制处理,要访问单个数据字节,我们可以将其改为 “arraybuffer”:
限速 socket.bufferedAmount 属性储存目前已缓冲的字节数,等待通过网络发送。 我们可以检查它以查看 socket 是否真的可用于传输。
连接关闭
通过 close 事件处理器获取了关闭码和关闭原因,例如:
最常见的数字码:
还有其他数字码,例如:
连接状态
总结
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:19:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |