,表示服务器自身工作正常,访问后端服务器时发生了错误 “503 Service Unavailable”表示服务器当前很忙,暂时无法响应服务 3.读懂http的body 客户端用 Accept 头告诉服务器希望接收什么样的数据...)技术缓解 6.http代理 所谓的“代理服务”就是指服务本身不生产内容,而是处于中间位置转发上下游的请求和响应,具有双重身份:面向下游的用户时,表现为服务器,代表源服务器响应客户端的请求;而面向上游的源服务器时...内含了 TLS1.3,只能加密通信,支持 0-RTT 快速建连 QUIC 的连接使用“不透明”的连接 ID,不绑定在“IP 地址 + 端口”上,支持“连接迁移” QUIC 的流与 HTTP/2 的流很相似...Push 等特性,但“请求 - 应答”依然是主要的工作方式,所以出现了 WebSocket WebSocket 是一个“全双工”的通信协议,相当于对 TCP 做了一层“薄薄的包装”,让它运行在浏览器环境里...“意外”识别成 WebSocket,握手消息还增加了两个额外的认证用头字段(所谓的“挑战”,Challenge) Sec-WebSocket-Key:一个 Base64 编码的 16 字节随机数,作为简单的认证密钥
一.ssh: connect to host 192.168.110.249 port 22: Connection refused错误的原因与解决办法 在用 [ssh]远程登陆服务器时遇到如下问题:...“Permission denied,please try again” 错误的原因与解决办法 有时候我们需要使用 ssh 连接服务器,一般情况下可以正常连上,不过有时候还是会出现这个错误 “Permission...denied,please try again”,错误原因: 服务器能拒绝,说明网络和 ssh 服务没有问题,出现这个问题的最可能的原因是: 1....解决方法: 仔细分析了一下大概是因为 192.168.110.249 的主机密钥改了,而本机使用的还是原来的公钥与其匹配,因此会出现错误。...一旦使用本机 ssh 连接过目标机,则会在~/.ssh/know_hosts 文件下生成目标机的公钥,以便下次可以直接使用。
Websocket 简介 WebSocket 是一种基于 TCP 连接的全双工通信的协议,其工作在应用层,建立连接的时候通过复用 Http 握手通道,完成 Http 协议的切换升级,即切换到 WebSocket...HTTP是单向的,只能由客户端发起请求时,服务器才能响应,服务器不能主动向客户端发送数据。 WebSocket 可以和 HTTP Server 共享相同端口。...总得来说,头部不超过14个字节。 支持扩展,用户可以扩展协议实现自己的子协议。...服务器: 响应协议升级 服务器返回的响应头必须包含如下的内容: HTTP/1.1 101 Switching Protocols Connection:Upgrade Upgrade: websocket...的作用 前面简单提到他的作用为: 提供基础的防护, 减少恶意连接, 进一步阐述如下: Key 可以避免服务器收到非法的 WebSocket 连接, 比如 Http 请求连接到 Websocket, 此时服务端可以直接拒绝
sockjs会为每个Websocket连接维护一个会话,且这个会话里面会维护一个消息队列,当Websocket意外断开时,不至于丢失数据 ---- XHR-streaming XHR-Streming,...XHR-streaming的原理也比较简单:服务端使用分块传输编码(Chunked transfer encoding)的HTTP传输机制进行响应,并且服务器端不终止HTTP响应流,让HTTP始终处于持久连接状态...有了分块传输机制后,动态生成内容的服务器就可以维持HTTP长连接, 也就是说服务器响应流不结束,TCP连接就不会断开....不终止输出流 }) 我们会发现请求会一直处于Pending状态(绿色下载图标),除非出现异常、服务器关闭或显式关闭连接(比如设置超时机制),请求是永远不会终止的。...): 只允许服务器向浏览器单向的推送数据 通过XHR-Streaming,可以允许服务端连续地发送消息,无需每次响应后再去建立一个连接, 所以它是除了Websocket之外最为高效的实时通信方案.
GraphQlTester GraphQlTester 定义了一个工作流来测试 GraphQL 请求,具有以下优点: 验证 GraphQL 响应为 200(OK)。...验证响应中“错误”键下没有意外错误。 在响应中的“数据”键下解码。 使用 JsonPath 解码响应的不同部分。 测试订阅。...错误 测试不能使用验证数据,如果在响应中有错误的“错误”键下有错误。...方法定义了特定于订阅的工作流,该工作流返回响应流而不是单个响应。...客户端进行测试,也不能用于 GraphQL 对 WebSocket 请求的集成测试。
如果服务器没有(或者不能)升级这次连接,它会忽略客户端发送的 Upgrade 标头字段,返回一个常规的响应:例如一个 200 OK)...."); WebSocket() 构造函数已经自动完成了发送初始 HTTP/1.1 连接的所有工作,然后为你处理握手及升级过程。...响应标头 如果服务器无法使用指定版本的 Websocket 协议进行通信,它将响应一个错误(例如 426 Upgrade Required),该错误在它的标头中包含一个 Sec-WebSocket-Version...如果服务器确实支持请求的协议版本,则响应中不包含 Sec-WebSocket-Version 标头。...仅响应标头 来自服务器的响应可能包含这些。 Sec-WebSocket-Accept 当服务器愿意发起 WebSocket 连接时,其包含在打开握手过程中来自服务器的响应消息中。
用HTTP做连接 定义WebSocket标准时的一个早期考虑因素是确保它“与网络”很好地协同工作。...响应。 “状态行”告诉客户端HTTP状态代码(如果没有问题,通常为200),并提供解释状态代码的简短“原因”文本描述。...如果它这样做,则服务器需要选择其中一个协议并将其包含在响应头中,否则将使握手失败并终止连接。...两者都是基于JSON标准构建的数据格式,并且会有许多边缘情况,其中一个可能被解释为另一个,从而在处理数据时导致意外错误。虽然不可否认本身不是消息传递协议,但该示例仍然适用。...请注意,如果客户端请求使用子协议但未提供服务器可以支持的任何内容,则服务器必须发送失败响应并关闭连接。
Sec-WebSocket-Key:与后面服务端响应首部的Sec-WebSocket-Accept是配套的,提供基本的防护,比如恶意的连接,或者无意的连接。 注意,上面请求省略了部分非重点请求首部。...前面提到了,Sec-WebSocket-Key/Sec-WebSocket-Accept在主要作用在于提供基础的防护,减少恶意连接、意外连接。...这样可以避免客户端发送ajax请求时,意外请求协议升级(websocket upgrade) 可以防止反向代理(不理解ws协议)返回错误的数据。...向 邪恶服务器 发起WebSocket连接。...协议升级请求 实际到达 代理服务器。 代理服务器 将协议升级请求转发到 邪恶服务器。 邪恶服务器 同意连接,代理服务器 将响应转发给 攻击者。
Sec-WebSocket-Key:与后面服务端响应首部的Sec-WebSocket-Accept是配套的,提供基本的防护,比如恶意的连接,或者无意的连接。 注意,上面请求省略了部分非重点请求首部。...此外,服务端回应的HTTP状态码只能在握手阶段使用。过了握手阶段后,就只能采用特定的错误码。...,Sec-WebSocket-Key/Sec-WebSocket-Accept在主要作用在于提供基础的防护,减少恶意连接、意外连接。...这样可以避免客户端发送ajax请求时,意外请求协议升级(websocket upgrade) 可以防止反向代理(不理解ws协议)返回错误的数据。...协议升级请求 实际到达 代理服务器。 代理服务器 将协议升级请求转发到 邪恶服务器。 邪恶服务器 同意连接,代理服务器 将响应转发给 攻击者。
状态码 含义 状态码 含义 200 正常 403 禁止 301 永久移动 404 找不到 302 临时移动 500 内部服务器错误 304 未修改 502 无效网关 401 未经授权 504 网关超时...}).catch(function(err) { // 处理错误 }); 6.4 WebSocket WebSocket:是HTML5新增的一个客户端与服务器异步通信的API。...// 创建WebSocket对象,连接服务器 var ws = new WebSocket('ws://127.0.0.1:2000'); // 当连接成功时执行的回调函数 ws.onopen = function...= function(e) { console.log('收到服务器消息:' + e.data); }; r) { // 处理错误 }); ### 6.4 WebSocket WebSocket...```js // 创建WebSocket对象,连接服务器 var ws = new WebSocket('ws://127.0.0.1:2000'); // 当连接成功时执行的回调函数 ws.onopen
此外,服务端回应的HTTP状态码只能在握手阶段使用。过了握手阶段后,就只能采用特定的错误码。...,Sec-WebSocket-Key/Sec-WebSocket-Accept 在主要作用在于提供基础的防护,减少恶意连接、意外连接。...这样可以避免客户端发送ajax请求时,意外请求协议升级(websocket upgrade) 4)可以防止反向代理(不理解ws协议)返回错误的数据。...5)Sec-WebSocket-Key主要目的并不是确保数据的安全性,因为Sec-WebSocket-Key、Sec-WebSocket-Accept的转换计算公式是公开的,而且非常简单,最主要的作用是预防一些常见的意外情况...根据前文,首先是一个协议升级请求; 2)协议升级请求 实际到达 代理服务器; 3)代理服务器 将协议升级请求转发到 邪恶服务器; 4)邪恶服务器 同意连接,代理服务器 将响应转发给 攻击者。
TIME_WAIT 状态下,如果收到了一个带有更大序列号的新的 SYN 包时,也能够立即响应重新打开连接,从而不会对服务器产生影响)。...如果 WebSocket 连接没有被建立,我们也说WebSocket已经关闭,但是不彻底。...终端在接到WebSocket 连接失效的指令后,不能继续尝试处理来自另一端的数据(包括响应的关闭帧)。...为了实现这些,客户端必须像第 7.1.7 节中定义的一样让WebSocket 连接失败。 如果任意一端底层的传输连接意外丢失,客户端必须让WebSocket 连接失败。...1001 1001 表示终端已经“走开”,例如服务器停机了或者在浏览器中离开了这个页面。 1002 1002 表示终端由于协议错误中止了连接。
与传统的 HTTP 请求-响应模型不同,SSE 是单向的,服务器可以持续不断地向客户端发送数据,而客户端通过一次长连接持续接收这些更新。...基于 HTTP 协议:SSE 是建立在 HTTP 协议之上的,浏览器原生支持,不需要额外的协议处理。自动重连:SSE 支持自动重连,当连接意外断开时,客户端会自动尝试重新连接服务器。2....传统的阻塞式编程在处理长连接(如 SSE)时可能会占用大量服务器资源。响应式编程通过非阻塞 I/O 操作,不仅可以高效处理长时间的连接,还能在有新数据时立即推送给客户端。...onerror:当连接发生错误时关闭连接,避免持续消耗资源。4. 测试 SSE运行 Spring Boot 应用,并访问 /sse/stream,可以看到服务器每秒钟向客户端推送一次当前时间信息。...WebSocket:双向通信,适合复杂的交互场景,如实时聊天、在线游戏等。WebSocket 是基于 TCP 的全双工连接,相对更复杂。
与传统的 HTTP 请求-响应模型不同,SSE 是单向的,服务器可以持续不断地向客户端发送数据,而客户端通过一次长连接持续接收这些更新。...基于 HTTP 协议:SSE 是建立在 HTTP 协议之上的,浏览器原生支持,不需要额外的协议处理。 自动重连:SSE 支持自动重连,当连接意外断开时,客户端会自动尝试重新连接服务器。 2....传统的阻塞式编程在处理长连接(如 SSE)时可能会占用大量服务器资源。响应式编程通过非阻塞 I/O 操作,不仅可以高效处理长时间的连接,还能在有新数据时立即推送给客户端。...onerror:当连接发生错误时关闭连接,避免持续消耗资源。 4....WebSocket:双向通信,适合复杂的交互场景,如实时聊天、在线游戏等。WebSocket 是基于 TCP 的全双工连接,相对更复杂。
长轮询(Long polling) 长轮询是与服务器保持持久连接的最简单的方式,它不使用任何特定的协议,例如 WebSocket 或者 Server Sent Event。...其流程为: 请求发送到服务器。 服务器在有消息之前不会关闭连接。 当消息出现时 —— 服务器将对其请求作出响应。 浏览器立即发出一个新的请求。...如果连接丢失,可能是因为网络错误,浏览器会立即发送一个新请求。...if (response.status == 502) { // 状态 502 是连接超时错误, // 连接挂起时间过长时可能会发生, // 远程服务器或代理会关闭它...大多数现代编程语言,包括 PHP 和 Ruby,都允许实现更适当的后端程序。只是请确保你的服务器架构在同时有很多连接的情况下能够正常工作。 ---- 使用场景 在消息很少的情况下,长轮询很有效。
Sec-WebSocket-Key:与后面服务端响应首部的Sec-WebSocket-Accept是配套的,提供基本的防护,比如恶意的连接,或者无意的连接。...,Sec-WebSocket-Key/Sec-WebSocket-Accept在主要作用在于提供基础的防护,减少恶意连接、意外连接。...这样可以避免客户端发送ajax请求时,意外请求协议升级(websocket upgrade); 4)可以防止反向代理(不理解ws协议)返回错误的数据。...,因为Sec-WebSocket-Key、Sec-WebSocket-Accept的转换计算公式是公开的,而且非常简单,最主要的作用是预防一些常见的意外情况(非故意的)。...根据前文,首先是一个协议升级请求; 2)协议升级请求 实际到达 代理服务器; 3)代理服务器 将协议升级请求转发到 邪恶服务器; 4)邪恶服务器 同意连接,代理服务器 将响应转发给 攻击者。
HTTP 和 WebSocket 都是客户端-服务器通信中使用的通信协议 1. HTTP协议 HTTP 是单向的,客户端发送请求,服务器发送响应。...举个例子,当用户向服务器发送请求时,该请求以 HTTP 或 HTTPS 的形式发送,服务器收到请求后向客户端发送响应,每个请求都与相应的响应相关联,发送响应后连接关闭,每个 HTTP 或 HTTPS 请求每次都会建立与服务器的新连接...以及包含正在传输到服务器的实际消息的正文。HTTP 标头的大小从 200 字节到 2 KB 不等,HTTP 标头的常见大小为 700-800 字节。...游戏应用 在游戏应用中,你可能会关注,数据是不断被服务器接收的,不刷新 UI 就会在屏幕上生效,UI 会自动刷新,甚至没有建立新的连接,所以它是在游戏应用程序中非常有用 3....连接一直保持活动状态,直到被客户端或服务器终止 HTTP 协议是一种单向协议,它工作在 TCP 协议之上,TCP 协议是一种面向连接的传输层协议,我们可以在收到响应 HTTP 连接关闭后使用 HTTP
错误处理不够直观:Fetch API 不会将 HTTP 状态码为 4xx 或 5xx 的响应视为错误,这意味着你需要在 .then() 方法中手动检查响应状态。...保持连接状态:一旦 WebSocket 连接建立,连接会保持开放状态,直到客户端或服务器关闭连接,这意味着不需要每次通信都重新建立连接。...服务器实现复杂:相比于基于 HTTP 的服务,实现 WebSocket 服务器需要更多的逻辑来处理连接的维护、消息的广播等。...跨域问题:WebSocket 同样受到同源策略的限制,跨域 WebSocket 连接需要服务器支持相应的 CORS(跨源资源共享)设置。...负载均衡器的支持:在使用 WebSocket 时,负载均衡器需要能够处理长连接,这可能会限制某些云服务或代理服务器的使用。 最佳使用场景:需要实时交互数据的场景,如聊天应用、在线游戏等。
) 发送 http 请求 服务器处理请求,浏览器接受 HTTP 响应 浏览器解析并渲染页面 关闭 TCP 连接(四次握手) 2.TCP三次握手 S:客户端的发送能力没问题 C:服务端的接收能力没问题...返回fin表明知道断开连接,(二次挥手) 服务端返回数据(三次挥手) 客服端收到fin,关闭连接(四次挥手) 4.HTTP常见的状态码 101:服务器由http升级成websocket的时候,如果服务器统一变更...,就会发送101 200:成功 301:永久重定向,新的url会在响应中给出。...400:语法错误 401:没权限 403:拒绝请求 404:资源不存在 405:请求方法不允许 500:服务器错误 5.http协议 HTTP 是超文本传输协议,HTTP 是一个在计算机世界里专门在两点之间传输文字...、长轮询两种通信方式封装成了统一的通信接口进行降级兼容; 单工、半双工和全双工通信 单工通信是指消息只能单方向传输的工作方式,数据信息从一端到另一端是单方向的。
Tendermint简介 Tendermint萌芽于比特币、以太坊这样的加密货币,它的目标是提供一个比比特币的工作量证明(PoW)更加高效和安全的共识算法。...简单地说,Tendermint是一个可供二次开发的软件包,可以在多台机器上安全、一致地实现应用状态的复制。 Tendermint可以在不超过1/3的机器失效时依然正常工作,无论失效的原因 是什么。...Tendermint实现了拜占庭容错。 任何正常工作的机器都会收到相同的交易日志,并分别推导出相同的状态 Tendermint的特性如下图所示: ?...单体应用通常不容易扩展、升级或再利用,而Tendermint则致力于将区块链技术栈的两个核心组件与其他部分解耦:共识引擎和P2P连接 —— 事实上这也是开发区块链的最困难的两个技术环节 —— 从而可以使用任何开发语言来开发...内核与ABCI接口的工作一切正常!
领取专属 10元无门槛券
手把手带您无忧上云