ASP.NET Core SignalR的协议协商

embedded/2025/2/13 0:06:54/
  1. SignalR支持多种服务器推送方式:Websocket、Server-Sent Events、长轮询。默认按顺序尝试。
  2. F12查看协商过程。
  3. websocket和HTTP是不同的协议,为什么能用同一个端口。
  4. 在【开发人员工具】的【网络】页签中看WebSocket通信过程。

协议协商问题

  1. 集群中协议协商的问题:“协商”请求被服务器A处理,而接下来的WebSocket请求却被服务器B处理。
  2. 解决方法:粘性会话和禁用协商。
  3. “粘性会话”(Sticky Session):把来自同一个客户端的请求都转发给同一台服务器上。缺点:因为共享公网IP等造成请求无法被平均的分配到服务器集群;扩容的自适应性不强。
  4. “禁用协商”:直接向服务器发出WebSocket请求。WebSocket连接一旦建立后,在客户端和服务器端直接就建立了持续的网络连接通道,在这个WebSocket连接中的后续往返WebSocket通信都是由同一台服务器来处理。缺点:无法降级到“服务器发送事件”或“长轮询”,不过不是大问题。

禁用协议协商方式

//设置连接选项,跳过协商,使用WebSockets传输
const options = {skipNegotiation: true,transport: signalR.HttpTransportType.WebSockets
};
//创建连接
connection = new signalR.HubConnectionBuilder()
.withUrl('https://localhost:7181/MyHub',options)
.withAutomaticReconnect().build();
onMounted(async function () {//设置连接选项,跳过协商,使用WebSockets传输const options = {skipNegotiation: true,transport: signalR.HttpTransportType.WebSockets};//创建连接connection = new signalR.HubConnectionBuilder()// .withUrl('https://localhost:7181/MyHub').withUrl('https://localhost:7181/MyHub',options).withAutomaticReconnect().build();//开始连接await connection.start();//注册ReceivePublicMessage事件,接收消息,添加到messages数组connection.on('ReceivePublicMessage', msg => {state.messages.push(msg);});});


http://www.ppmy.cn/embedded/161721.html

相关文章

关于SoC产品介绍:ICNM8001

这个是一款关于QHD显示器,主控芯片scaler IC。 功能:支持2路HDMI2.0接收机 支持HDCP1.4和HDCP2.22;支持HDCP1.4和HDCP2.2。 分辨率:2560*1440 刷新率:75Hz HDR:HDR10 封装:QFP216 接口&#xf…

如何在WPF中实现软件内嵌效果

1.创建Process进程,设置运行程序文件路径 Process proc new Process(); proc.StartInfo.FileName "C:\Users\hdevelop.exe"; proc.Start(); proc.WaitForInputIdle(); 2.根据创建的进程获取窗口句柄 IntPtr hWnd proc.MainWindowHandle; 3.开启线程…

antd-react日期组件disabledDate不可选择的日期 (置灰)属性

需求:原定结项时间表单里回显为2025-02-06,延期时间的选择范围要设置从2025-02-07开始选择包括2.7号的; 2.7号之前的置灰,不可选择 PC端部分代码: // react的函数组件写法 const disabledDate function (current) {console.log(c…

CSS 小技巧 —— CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层

CSS 小技巧 —— CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层 1. 两个元素实现 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>纯 CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层</titl…

npm运行Vue项目报错 error:0308010c:digital envelope routines::unsupported

大家好&#xff0c;我是 程序员码递夫。 问题 VSCode 运行Vue项目&#xff0c;提示错误&#xff1a; building 2/2 modules 0 activeError: error:0308010c:digital envelope routines::unsupported 解决方法 原因是 npm 高版本(大于17)&#xff0c;对ssl的处理做了改进&…

Windows命令行学习(和Linux命令比对记忆

本文侧重于记忆Windows简单命令&#xff0c;所以相关Linux命令演示较少&#xff0c;学习Linux命令详见Linux系统专栏&#xff1b;本文示例版本为Windows 10与Linux 7。 目录 一、文件与目录操作 1、列出当前目录下文件及子目录信息 Windows&#xff1a;dir Linux&#xff1…

SpringBoot单机模式,能否支持一万用户请求并发?

Spring Boot 单机模式能否支持一万用户请求并发&#xff0c;取决于多个因素&#xff1a; 硬件配置&#xff1a;CPU、内存、磁盘I/O和网络带宽是关键。高性能硬件能显著提升并发处理能力。 应用复杂度&#xff1a;业务逻辑复杂度和数据库操作频率会影响性能。复杂的业务逻辑和高…

Docker使用指南与Dockerfile文件详解:从入门到实战

Docker使用指南与Dockerfile文件详解:从入门到实战 文章目录 **Docker使用指南与Dockerfile文件详解:从入门到实战****引言****第一部分:Docker 核心概念速览****1. Docker 基础架构****2. Docker 核心命令****第二部分:Dockerfile 文件深度解析****1. Dockerfile 是什么?…