SignalR 填坑记
1.发送文字消息没有问题,如何发送文件消息
SignalR可以将参数序列化和反序列化. 这些参数被序列化的格式叫做Hub 协议, 所以Hub协议就是一种用来序列化和反序列化的格式.
Hub协议的默认协议是JSON, 还支持另外一个协议是MessagePack. MessagePack是二进制格式的, 它比JSON更紧凑, 而且处理起来更简单快速, 因为它是二进制的.
但我们使用的版本暂时没有此功能,所以建议还是采用Base64传输。
2.发送文件时,如果文件过大,服务端无法接收
Signalr MessageSize默认是64K 大小,设为NULL即禁用这个限制 ,自己也可以按需求改为自己需要的大小
GlobalHost.Configuration.MaxIncomingWebSocketMessageSize = null;
3.如果出现内存过高,建议更改此值
GlobalHost.Configuration.DefaultMessageBufferSize = 20;
DefaultMessageBufferSize:默认情况下,SignalR 将保留在内存中的每个中心的每个连接的 1000 条消息。 如果使用大型消息时,这可能会造成内存问题,这可以通过减小此值来缓解这。 此设置可以设置Application_Start事件处理程序在 ASP.NET 应用程序,或在Configuration自承载的应用程序中的 OWIN 启动类的方法。 下面的示例演示如何以减少应用程序,以减少使用的服务器内存量的内存占用减小此值:
4.Core与Net Framework间能否通信
Core版本的SignalR 不能与Net Framework版本的通信。所以客户端和服务端 必须是支持Core版本的SignalR。
5.Core版本的SignalR 方法命名方式使用驼峰命名法
以前服务端使用大写,客户端使用小写,现在在Core版本已经统一
ignalR技术在 ASP.NET Core 和 ASP.NET下有不同的实现,二者之间是存在差异的。所以在学习之前你应该搞懂他们之间的差异性,这有助你选择合适的框架。
本文知识来源 ASP.NET Core官方文档:https://docs.microsoft.com/zh-cn/aspnet/core/signalr/version-differences?view=aspnetcore-2.2
| ASP.NET SignalR | ASP.NET Core SignalR | |
| 服务器 NuGet 包 | Microsoft.AspNet.SignalR | Microsoft.AspNetCore.App (.NET Core) Microsoft.AspNetCore.SignalR (.NET Framework) | 
| 客户端 NuGet 包 | Microsoft.AspNet.SignalR.Client Microsoft.AspNet.SignalR.JS | Microsoft.AspNetCore.SignalR.Client | 
| 客户端 npm 包 | signalr | @aspnet/signalr | 
| 服务器应用类型 | ASP.NET (System.Web) 或 OWIN 自承载 | ASP.NET Core | 
| 受支持的服务器平台 | .NET framework 4.5 或更高版本 | .NET Framework 4.6.1 或更高版本 .NET core 2.1 或更高版本 | 
服务端的差异
1、删除 PersistentConnection
了解ASP.NET SignalR的笔友都知道,在此版本中存在PersistentConnection(持久连接)和 Hubs(集线器),PersistentConnection 处于较底层,定义了众多socket操作api。但是在.NET Core 中,微软已经移除了该实现,保留了抽象度更高的Hubs。
2、GlobalHost
在ASP.NET MVC和Web Api 中如果想集成SignalR,我们会使用如下代码获取:
GlobalHost.ConnectionManager.GetHubContext<T>();
但是在.NET Core 中需要使用DI访问HubContext。
3、删除HubState
类似下面这种通过客户端定义变量,服务端可以直接使用的方式,在.NET Core 中已不被支持。
| 1 2 3 4 5 | // 客户端代码(Javascript)hubProxy.state.UserName="mike"hubProxy.state.MsgId=1;hubProxy.server.alert(""); | 
| 1 2 3 4 5 6 | // 服务端代码publicTask Alert(stringmsg){   Console.WriteLine("UserName:"+ Clients.Caller.UserName);   Console.WriteLine("MsgId:"+ Clients.Caller.MsgId);} | 
客户端上的差异
1、Javascript客户端的获取方式
在以前的版本中,JavaScript 客户端是通过 Visual Studio 中的 NuGet 包获取的。 Core 版本的 @aspnet/signalr npm 包包含 JavaScript 库。 此包不包括在ASP.NET Core Web 应用程序模板。 使用 npm 获取并安装 @aspnet/signalr npm 包。
2、已删除对JQuery的依赖
3、客户端语法的不同
JavaScript 语法已与 Signalr 早期版本中的相应语法不同。 请使用 HubConnectionBuilder API 而非 $connection 对象创建连接。
4、中心代理
已经不再自动生成代理
SignalR 填坑记的更多相关文章
- UiAutomator2.0升级填坑记
		UiAutomator2.0升级填坑记 SkySeraph May. 28th 2017 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sk ... 
- Android项目开发填坑记-Fragment的onBackPressed
		Github版 CSDN版 知识背景 Fragment在当前的Android开发中,有两种引用方式,一个是 Android 3.0 时加入的,一个是supportV4包中的.这里简称为Fragment ... 
- Android项目开发填坑记-Fragment的onAttach
		背景 现在Android开发多使用一个Activity管理多个Fragment进行开发,不免需要两者相互传递数据,一般是给Fragment添加回调接口,让Activity继承并实现. 回调接口一般都写 ... 
- Android项目开发填坑记-so文件引发的攻坚战
		故事的最初 我负责的项目A要求有播放在线视频的功能,当时从别人的聊天记录的一瞥中发现百度有相关的SDK,当时找到的是Baidu-T5Player-SDK-Android-1.4s,项目中Demo的so ... 
- minikube windows hyperx填坑记
		minikube windows hyperx填坑记 安装了一天半,还是没行,先放弃 开始 minikube start --vm-driver=hyperv --hyperv-virtual-swi ... 
- 浅谈html5 video 移动端填坑记
		这篇文章主要介绍了浅谈html5 video 移动端填坑记,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 本文介绍了html5 video 移动端填坑记,分享给大家,具体 ... 
- Java web 开发填坑记 2 -如何正确的创建一个Java Web 项目
		转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72566261 本文出自[赵彦军的博客] Java web 开发填坑记 1-如何正确 ... 
- Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)
		简介 无论你在哪里,在做什么都会遇到很多坑,这些坑有些事别人挖的,有些是自己挖的.别人挖的叫坑人,自己挖的叫自杀,儿子挖的叫坑爹.因此在做app自动化道路上也不会是一帆风顺的,你会踩很多坑,这些坑和你 ... 
- Cloudera Manager 5.9 和 CDH 5.9 离线安装指南及个人采坑填坑记
		公司的CDH早就装好了,一直想自己装一个玩玩,最近组了台电脑,笔记本就淘汰下来了,加上之前的,一共3台,就在X宝上买了CPU和内存升级了下笔记本,就自己组了个集群. 话说,好想去捡垃圾,捡台8核16线 ... 
随机推荐
- 注解 @EnableFeignClients 工作原理
			概述在Spring cloud应用中,当我们要使用feign客户端时,一般要做以下三件事情 : 使用注解@EnableFeignClients启用feign客户端:示例 : @SpringBootAp ... 
- 文件夹上传控件webupload插件
			我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ... 
- three.js 加载3DS 404 文件找不到
			web.config修改如下: code: <?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配 ... 
- [洛谷P3092]【[USACO13NOV]没有找零No Change】
			状压\(DP\) + 二分 考虑构成:\(k<=16\)所以根据\(k\)构造状压\(dp\),将所有硬币的使用情况进行状态压缩 考虑状态:数组\(dp[i]\)表示用\(i\)状态下的硬币可以 ... 
- 洛谷 P2815 IPv6地址压缩 题解
			P2815 IPv6地址压缩 题目背景 (友情提示:IPv6基础知识曾多次出现在NOIP初赛中)Internet Protocol,互联网协议,即为我们常说的IP.我们目前常说的IP主要指它的第四版, ... 
- k8s实现灰度发布
			灰度发布在实际生产部署中是经常被使用的方式,常规的方法是手动从前端LB(负载均衡)上将后端服务器摘掉,然后,停服务,最后上传代码,完成软连接更新.在使用CI/CD工具时,这个过程变得自动化了,我们只需 ... 
- windows内核代码之进程操作
			[toc] 一丶简介 整理一下windows内核中.常用的代码.这里只整理下进程的相关代码. 二丶 windows内核之遍历进程 内核中记录进程的结构体是EPROCESS结构.所以只需要遍历这个结构即 ... 
- 东芝300D粉盒清零
			东芝300D粉盒清零 1:打开前盖 2:按"OK"键3秒,等 显示 "更换硒鼓"(注:不用选 是/否,直接进入第3步) 3:按"启用"键 4 ... 
- Net core学习系列(九)——Net Core配置
			一.简介 NET Core为我们提供了一套用于配置的API,它为程序提供了运行时从文件.命令行参数.环境变量等读取配置的方法.配置都是键值对的形式,并且支持嵌套,.NET Core还内建了从配置反序列 ... 
- 第08组 Beta冲刺(4/4)
			队名 八组评分了吗 组长博客链接(5分) ( https://www.cnblogs.com/leemelon/p/12040924.html ) 作业博客 [作业链接] (https://edu.c ... 
