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
// 服务端代码
public Task Alert(string msg)
{
   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 填坑记的更多相关文章

  1. UiAutomator2.0升级填坑记

    UiAutomator2.0升级填坑记 SkySeraph May. 28th 2017 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sk ...

  2. Android项目开发填坑记-Fragment的onBackPressed

    Github版 CSDN版 知识背景 Fragment在当前的Android开发中,有两种引用方式,一个是 Android 3.0 时加入的,一个是supportV4包中的.这里简称为Fragment ...

  3. Android项目开发填坑记-Fragment的onAttach

    背景 现在Android开发多使用一个Activity管理多个Fragment进行开发,不免需要两者相互传递数据,一般是给Fragment添加回调接口,让Activity继承并实现. 回调接口一般都写 ...

  4. Android项目开发填坑记-so文件引发的攻坚战

    故事的最初 我负责的项目A要求有播放在线视频的功能,当时从别人的聊天记录的一瞥中发现百度有相关的SDK,当时找到的是Baidu-T5Player-SDK-Android-1.4s,项目中Demo的so ...

  5. minikube windows hyperx填坑记

    minikube windows hyperx填坑记 安装了一天半,还是没行,先放弃 开始 minikube start --vm-driver=hyperv --hyperv-virtual-swi ...

  6. 浅谈html5 video 移动端填坑记

    这篇文章主要介绍了浅谈html5 video 移动端填坑记,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 本文介绍了html5 video 移动端填坑记,分享给大家,具体 ...

  7. Java web 开发填坑记 2 -如何正确的创建一个Java Web 项目

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72566261 本文出自[赵彦军的博客] Java web 开发填坑记 1-如何正确 ...

  8. Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)

    简介 无论你在哪里,在做什么都会遇到很多坑,这些坑有些事别人挖的,有些是自己挖的.别人挖的叫坑人,自己挖的叫自杀,儿子挖的叫坑爹.因此在做app自动化道路上也不会是一帆风顺的,你会踩很多坑,这些坑和你 ...

  9. Cloudera Manager 5.9 和 CDH 5.9 离线安装指南及个人采坑填坑记

    公司的CDH早就装好了,一直想自己装一个玩玩,最近组了台电脑,笔记本就淘汰下来了,加上之前的,一共3台,就在X宝上买了CPU和内存升级了下笔记本,就自己组了个集群. 话说,好想去捡垃圾,捡台8核16线 ...

随机推荐

  1. 注解 @EnableFeignClients 工作原理

    概述在Spring cloud应用中,当我们要使用feign客户端时,一般要做以下三件事情 : 使用注解@EnableFeignClients启用feign客户端:示例 : @SpringBootAp ...

  2. 文件夹上传控件webupload插件

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...

  3. three.js 加载3DS 404 文件找不到

    web.config修改如下: code: <?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配 ...

  4. [洛谷P3092]【[USACO13NOV]没有找零No Change】

    状压\(DP\) + 二分 考虑构成:\(k<=16\)所以根据\(k\)构造状压\(dp\),将所有硬币的使用情况进行状态压缩 考虑状态:数组\(dp[i]\)表示用\(i\)状态下的硬币可以 ...

  5. 洛谷 P2815 IPv6地址压缩 题解

    P2815 IPv6地址压缩 题目背景 (友情提示:IPv6基础知识曾多次出现在NOIP初赛中)Internet Protocol,互联网协议,即为我们常说的IP.我们目前常说的IP主要指它的第四版, ...

  6. k8s实现灰度发布

    灰度发布在实际生产部署中是经常被使用的方式,常规的方法是手动从前端LB(负载均衡)上将后端服务器摘掉,然后,停服务,最后上传代码,完成软连接更新.在使用CI/CD工具时,这个过程变得自动化了,我们只需 ...

  7. windows内核代码之进程操作

    [toc] 一丶简介 整理一下windows内核中.常用的代码.这里只整理下进程的相关代码. 二丶 windows内核之遍历进程 内核中记录进程的结构体是EPROCESS结构.所以只需要遍历这个结构即 ...

  8. 东芝300D粉盒清零

    东芝300D粉盒清零 1:打开前盖 2:按"OK"键3秒,等 显示 "更换硒鼓"(注:不用选 是/否,直接进入第3步) 3:按"启用"键 4 ...

  9. Net core学习系列(九)——Net Core配置

    一.简介 NET Core为我们提供了一套用于配置的API,它为程序提供了运行时从文件.命令行参数.环境变量等读取配置的方法.配置都是键值对的形式,并且支持嵌套,.NET Core还内建了从配置反序列 ...

  10. 第08组 Beta冲刺(4/4)

    队名 八组评分了吗 组长博客链接(5分) ( https://www.cnblogs.com/leemelon/p/12040924.html ) 作业博客 [作业链接] (https://edu.c ...