- 从一次真实排查出发,讲清 Nginx 代理 WebSocket 必须透传的 Upgrade 头、关闭缓冲的原因,以及读写超时与心跳周期如何匹配,附完整配置与常见坑排查顺序。 从一次真实排查出发,讲清 Nginx 代理 WebSocket 必须透传的 Upgrade 头、关闭缓冲的原因,以及读写超时与心跳周期如何匹配,附完整配置与常见坑排查顺序。
- 聊天框、弹幕、股票行情、在线客服的消息,这些页面不用刷新就能自己更新,靠的都是 WebSocket。它和普通 HTTP 请求最大的区别是连接不会断:握手一次之后,浏览器和服务器随时能互相发消息。本文讲清它和 HTTP 的差别、工作流程和适用场景,听完就能分清什么时候该用它、什么时候不该用。你有没有想过,网页聊天时对方的消息是怎么“自己冒出来”的?普通网页的工作方式像寄信:浏览器发一个 HTT... 聊天框、弹幕、股票行情、在线客服的消息,这些页面不用刷新就能自己更新,靠的都是 WebSocket。它和普通 HTTP 请求最大的区别是连接不会断:握手一次之后,浏览器和服务器随时能互相发消息。本文讲清它和 HTTP 的差别、工作流程和适用场景,听完就能分清什么时候该用它、什么时候不该用。你有没有想过,网页聊天时对方的消息是怎么“自己冒出来”的?普通网页的工作方式像寄信:浏览器发一个 HTT...
- 一、问题现象用 Nginx 给后端服务做反向代理时,HTTP 接口一切正常,但前端 WebSocket 一直连不上:浏览器控制台报 WebSocket connection failed,或者连接建立后立刻断开,状态码是 200 而不是 101。这类问题十有八九不是后端代码的锅,而是 Nginx 默认不会转发 WebSocket 的升级请求。二、原因WebSocket 建立连接时,浏览器先发... 一、问题现象用 Nginx 给后端服务做反向代理时,HTTP 接口一切正常,但前端 WebSocket 一直连不上:浏览器控制台报 WebSocket connection failed,或者连接建立后立刻断开,状态码是 200 而不是 101。这类问题十有八九不是后端代码的锅,而是 Nginx 默认不会转发 WebSocket 的升级请求。二、原因WebSocket 建立连接时,浏览器先发...
- 单节点的 WebSocket 服务很容易写:维护一个连接表,收到消息就推给对应的连接。但连接数上去、需要多节点部署之后,问题会从“怎么建连接”变成“消息怎么找到人”。第一个问题,连接和节点的绑定。 一个用户连在节点 A,另一个用户连在节点 B,A 上的用户发消息给 B 上的用户,节点 A 不知道 B 的连接在哪里。解决方案是引入一个共享的连接注册表:每个节点在用户连接时把 user_id -... 单节点的 WebSocket 服务很容易写:维护一个连接表,收到消息就推给对应的连接。但连接数上去、需要多节点部署之后,问题会从“怎么建连接”变成“消息怎么找到人”。第一个问题,连接和节点的绑定。 一个用户连在节点 A,另一个用户连在节点 B,A 上的用户发消息给 B 上的用户,节点 A 不知道 B 的连接在哪里。解决方案是引入一个共享的连接注册表:每个节点在用户连接时把 user_id -...
- 记录一次 NapCat 与宿主服务的 WebSocket 断连事故:报错刷了几百条却没人管,根因是重连次数上限只有 100 次。 记录一次 NapCat 与宿主服务的 WebSocket 断连事故:报错刷了几百条却没人管,根因是重连次数上限只有 100 次。
- 做 A 股实时行情采集的人,迟早会被同一个问题教育一次:程序跑了一夜,早上打开看板,发现中间少了一段行情,而且没有任何报错。原因几乎总是同一个——长连接在夜里被静默断开,客户端没有感知,或者感知了但重连策略写得太粗糙,重连成功之后留下的空洞没人补。这篇文章记录我在自建采集服务里最终落地的一套做法,分两部分:重连退避和数据补洞。 一、断线为什么难以察觉WebSocket 的断开发生得非常安静。... 做 A 股实时行情采集的人,迟早会被同一个问题教育一次:程序跑了一夜,早上打开看板,发现中间少了一段行情,而且没有任何报错。原因几乎总是同一个——长连接在夜里被静默断开,客户端没有感知,或者感知了但重连策略写得太粗糙,重连成功之后留下的空洞没人补。这篇文章记录我在自建采集服务里最终落地的一套做法,分两部分:重连退避和数据补洞。 一、断线为什么难以察觉WebSocket 的断开发生得非常安静。...
- 最近在写一个基于B/S架构的聊天功能,本地测试没发现问题,但是部署到生产环境后总是断开。开始以为是后端超时问题,加大了KeepAliveInterval的时间。 //启用WebSocket app.UseWebSockets(new WebSocketOptions { //心跳检测间隔 ... 最近在写一个基于B/S架构的聊天功能,本地测试没发现问题,但是部署到生产环境后总是断开。开始以为是后端超时问题,加大了KeepAliveInterval的时间。 //启用WebSocket app.UseWebSockets(new WebSocketOptions { //心跳检测间隔 ...
- 前言实时需求(站内消息、协作编辑、行情推送、任务进度)第一反应都是 WebSocket。但能连上只是开始,真正折磨人的是"半夜连接悄悄断了"“消息重复了”“集群下收不到广播”。本文按连接生命周期过一遍。 一、先选型:轮询 / SSE / WebSocket方案方向适用场景代价短轮询客户端拉低频状态查询大量空请求,延迟高长轮询客户端拉兼容性要求极高占连接,实现复杂SSE服务端推单向流(日志、... 前言实时需求(站内消息、协作编辑、行情推送、任务进度)第一反应都是 WebSocket。但能连上只是开始,真正折磨人的是"半夜连接悄悄断了"“消息重复了”“集群下收不到广播”。本文按连接生命周期过一遍。 一、先选型:轮询 / SSE / WebSocket方案方向适用场景代价短轮询客户端拉低频状态查询大量空请求,延迟高长轮询客户端拉兼容性要求极高占连接,实现复杂SSE服务端推单向流(日志、...
- 新手第一次配 Nginx,往往从“把域名指向一台内网服务”开始。反向代理本身不复杂:用户访问 Nginx,Nginx 按规则把请求转发给身后的应用,再把响应带回。但几个细节一旦写错,就会出现 502、接口 404、实时数据断连这类问题。下面是最常见的要点。一、proxy_pass 末尾的斜杠,决定路径怎么拼location 是 /api/、请求是 /api/user 时:- proxy_pa... 新手第一次配 Nginx,往往从“把域名指向一台内网服务”开始。反向代理本身不复杂:用户访问 Nginx,Nginx 按规则把请求转发给身后的应用,再把响应带回。但几个细节一旦写错,就会出现 502、接口 404、实时数据断连这类问题。下面是最常见的要点。一、proxy_pass 末尾的斜杠,决定路径怎么拼location 是 /api/、请求是 /api/user 时:- proxy_pa...
- WebSocket 实时通信实战:心跳、重连与消息可靠投递 前言实时需求(站内消息、协作编辑、行情推送、任务进度)第一反应都是 WebSocket。但能连上只是开始,真正折磨人的是"半夜连接悄悄断了"“消息重复了”“集群下收不到广播”。本文按连接生命周期过一遍。 一、先选型:轮询 / SSE / WebSocket方案方向适用场景代价短轮询客户端拉低频状态查询大量空请求,延迟高长轮询客户端... WebSocket 实时通信实战:心跳、重连与消息可靠投递 前言实时需求(站内消息、协作编辑、行情推送、任务进度)第一反应都是 WebSocket。但能连上只是开始,真正折磨人的是"半夜连接悄悄断了"“消息重复了”“集群下收不到广播”。本文按连接生命周期过一遍。 一、先选型:轮询 / SSE / WebSocket方案方向适用场景代价短轮询客户端拉低频状态查询大量空请求,延迟高长轮询客户端...
- 维度SSEWebSocketWebTransport方向服务端到客户端单向双向双向,基于 HTTP/3协议普通 HTTP独立协议,需升级握手QUIC,需 HTTP/3 支持浏览器支持广很广较新,部分浏览器需配置代理/防火墙友好度好,就是 HTTP一般,长连接可能被断取决于网络环境断线重连浏览器自带重连需自己实现需自己实现多路复用每个流一个连接单连接多消息原生多流适合场景LLM token 流... 维度SSEWebSocketWebTransport方向服务端到客户端单向双向双向,基于 HTTP/3协议普通 HTTP独立协议,需升级握手QUIC,需 HTTP/3 支持浏览器支持广很广较新,部分浏览器需配置代理/防火墙友好度好,就是 HTTP一般,长连接可能被断取决于网络环境断线重连浏览器自带重连需自己实现需自己实现多路复用每个流一个连接单连接多消息原生多流适合场景LLM token 流...
- 测试环境:节点机为 InstaBox 免费机,无公网 IPv4,只通过 InstaBox 发布的 HTTPS 公共端口 URL 对外提供服务。两个入站跑在同一台机器、同一个 Xray 实例上:2097 端口 VLESS+WebSocket(路径 /ws),2098 端口 VLESS+XHTTP(路径 /xhttp,mode auto),UUID 相同。客户端为同一台 Muse VM 上的 X... 测试环境:节点机为 InstaBox 免费机,无公网 IPv4,只通过 InstaBox 发布的 HTTPS 公共端口 URL 对外提供服务。两个入站跑在同一台机器、同一个 Xray 实例上:2097 端口 VLESS+WebSocket(路径 /ws),2098 端口 VLESS+XHTTP(路径 /xhttp,mode auto),UUID 相同。客户端为同一台 Muse VM 上的 X...
- 多人同时编辑时,看到对方的光标和选区是很直观的体验,但实现起来要处理位置变换、心跳和断线重连。这篇拆开讲三个关键部分。 多人同时编辑时,看到对方的光标和选区是很直观的体验,但实现起来要处理位置变换、心跳和断线重连。这篇拆开讲三个关键部分。
- 接入外汇实时行情API后,WebSocket重连成功并不等于页面已经恢复。本文面向负责外汇看板、汇率监控或价格提醒的开发者,以 TickDB 的 EUR/USD 真实订阅为例,走完连接、订阅、主动断开与重连的过程,讲清报价时间、心跳和页面状态怎样配合,帮团队少被旧数据误导。文章里的恢复顺序和验收清单,产品经理和技术同事可以一起对照检查页面表现。 接入外汇实时行情API后,WebSocket重连成功并不等于页面已经恢复。本文面向负责外汇看板、汇率监控或价格提醒的开发者,以 TickDB 的 EUR/USD 真实订阅为例,走完连接、订阅、主动断开与重连的过程,讲清报价时间、心跳和页面状态怎样配合,帮团队少被旧数据误导。文章里的恢复顺序和验收清单,产品经理和技术同事可以一起对照检查页面表现。
- Nginx 反代 WebSocket 节点实战:Trojan+WS 与 VLESS+WS 的握手避坑 背景把 VLESS+WS、Trojan+WS 这类基于 WebSocket 传输的节点挂在 Nginx 后面,是很常见的架构:443 端口由 Nginx 统一接管 TLS,再按路径把流量分发到后端不同的入站端口。配置看着简单,但有几个坑不踩一遍很难意识到。 坑一:Upgrade 头没透传,... Nginx 反代 WebSocket 节点实战:Trojan+WS 与 VLESS+WS 的握手避坑 背景把 VLESS+WS、Trojan+WS 这类基于 WebSocket 传输的节点挂在 Nginx 后面,是很常见的架构:443 端口由 Nginx 统一接管 TLS,再按路径把流量分发到后端不同的入站端口。配置看着简单,但有几个坑不踩一遍很难意识到。 坑一:Upgrade 头没透传,...
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签