十三、Net Core6 SignalR入门(一)

这篇具有很好参考价值的文章主要介绍了十三、Net Core6 SignalR入门(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用 ASP.NET Core SignalR 中的中心 | Microsoft Docs了解如何使用 ASP.NET Core SignalR 中的中心。https://docs.microsoft.com/zh-cn/aspnet/core/signalr/hubs?view=aspnetcore-6.0ASP.NET Core SignalR JavaScript 客户端 | Microsoft DocsASP.NET Core SignalR JavaScript 客户端概述。https://docs.microsoft.com/zh-cn/aspnet/core/signalr/javascript-client?view=aspnetcore-6.0&viewFallbackFrom=aspnetcore-2.2&tabs=visual-studio一、创建Web API项目

十三、Net Core6 SignalR入门(一)

二、新建ChatHub.cs类,并写好向所有客户端发送消息的方法

调用依赖于保持活动状态的中心的异步方法时请使用 await。 例如,如果在没有 await 的情况下进行调用,则 Clients.All.SendAsync(...) 这类方法会失败,并且中心方法会在 SendAsync 完成之前完成、代码如下

 public class ChatHub : Hub
    {
        /// <summary>
        /// 向所有客户端发送消息
        /// </summary>
        /// <param name="user"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        public async Task SendMessage(string user, string message) => await Clients.All.SendAsync("ReceiveMessage", user, message);
        
    }

 注: 这里的 ReceiveMessage 字符串参数  是提供给前端监听的方法名称 ,可自定义

 三、注册中心所需的SignalR服务和终结点,打开Program.cs,添加两处 ※※※ SignalR ※※※ 代码

和处理跨域,记住跨域不能默认*,需要指定客户端地址,否则跨域问题还是存在

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();


// ※※※ SignalR ※※※ 
builder.Services.AddCors(options =>
{
    options.AddDefaultPolicy(
        builder =>
        {
            builder.WithOrigins("http://192.168.5.73:8848")
                .AllowAnyHeader()
                .WithMethods("GET", "POST")
                .AllowCredentials();
        });
});
builder.Services.AddSignalR();
// ※※※ SignalR ※※※ 


var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseAuthorization();

app.MapControllers();

//※※※ SignalR ※※※ 
app.UseCors();
app.MapHub<ChatHub>("/Chat");
// ※※※ SignalR ※※※ 

app.Run();

四、修改launchSettings.json配置文件十三、Net Core6 SignalR入门(一) 

接下来了解客户端怎样调用接收SignalR中心方法

一、引入signalr.js

npm init -y
npm install @microsoft/signalr

npm 将包内容安装在 node_modules\@microsoft\signalr\dist\browser 文件夹中。将 signalr.js 文件引用到你的项目。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>

		</style>
	</head>
	<body>
		<div id="content">

		</div>
		<br />
		<input type="text" id="name" /><br />
		<textarea id="msg"></textarea>
		<button onclick="send()">发送</button>
		<script src="signalr.min.js"></script>
		<script>
			getName();//获取随机名字
			
			//连接SignalR中心
			//withUrl 这里要和后端 launchSettings.json---profiles---SignalR---applicationUrl对应,否则无法握手,
			//最后跟上Program.cs配置的名字, app.MapHub<ChatHub>("/Chat");
			const connection = new signalR.HubConnectionBuilder()
				.withUrl("http://192.168.5.73:5196/Chat")
				.build();
			 
			//连接方法,如果连接失败,5s后重新连接
			async function start() {
				try {
					await connection.start();
					console.log("连接成功.");
				} catch (err) {
					console.log(err);
					setTimeout(start, 5000);
				}
			};
			
			//如果连接断开,尝试重新连接
			connection.onclose(async () => {
				await start();
			});

			// 开始连接.
			start();

			const all = (user, message) => {
				try {
					//调用中心的SendMessage方法
					connection.send("SendMessage", user, message);
				} catch (err) {
					console.error(err);
				}
			}

			const send = () => {
				var user = document.getElementById("name").value;
				var msg = document.getElementById("msg").value;
				all(user, msg);
			}
			
			//ReceiveMessage 与后端对应 ,接收中心发来的消息
			connection.on("ReceiveMessage", (user, message) => {
				var son = document.createElement("p");
				son.innerHTML = `${user}: ${message}`;
				document.getElementById("content").appendChild(son);
			});


			function getName() {
				var familyNames = new Array(
					"赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈",
					"褚", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许",
					"何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏",
					"陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章",
					"云", "苏", "潘", "葛", "奚", "范", "彭", "郎", "鲁", "韦",
					"昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁", "柳",
					"酆", "鲍", "史", "唐", "费", "廉", "岑", "薛", "雷", "贺",
					"倪", "汤", "滕", "殷", "罗", "毕", "郝", "邬", "安", "常",
					"乐", "于", "时", "傅", "皮", "卞", "齐", "康", "伍", "余",
					"元", "卜", "顾", "孟", "平", "黄", "和", "穆", "萧", "尹"
				);
				var givenNames = new Array(
					"子璇", "淼", "国栋", "夫子", "瑞堂", "甜", "敏", "尚", "国贤", "贺祥", "晨涛",
					"昊轩", "易轩", "益辰", "益帆", "益冉", "瑾春", "瑾昆", "春齐", "杨", "文昊",
					"东东", "雄霖", "浩晨", "熙涵", "溶溶", "冰枫", "欣欣", "宜豪", "欣慧", "建政",
					"美欣", "淑慧", "文轩", "文杰", "欣源", "忠林", "榕润", "欣汝", "慧嘉", "新建",
					"建林", "亦菲", "林", "冰洁", "佳欣", "涵涵", "禹辰", "淳美", "泽惠", "伟洋",
					"涵越", "润丽", "翔", "淑华", "晶莹", "凌晶", "苒溪", "雨涵", "嘉怡", "佳毅",
					"子辰", "佳琪", "紫轩", "瑞辰", "昕蕊", "萌", "明远", "欣宜", "泽远", "欣怡",
					"佳怡", "佳惠", "晨茜", "晨璐", "运昊", "汝鑫", "淑君", "晶滢", "润莎", "榕汕",
					"佳钰", "佳玉", "晓庆", "一鸣", "语晨", "添池", "添昊", "雨泽", "雅晗", "雅涵",
					"清妍", "诗悦", "嘉乐", "晨涵", "天赫", "?傲", "佳昊", "天昊", "萌萌", "若萌"
				);

				var i = parseInt(10 * Math.random()) * 10 + parseInt(10 * Math.random());
				var familyName = familyNames[i];

				var j = parseInt(10 * Math.random()) * 10 + parseInt(10 * Math.random());
				var givenName = givenNames[i];

				var name = familyName + givenName;
				document.getElementById("name").value = name;
			}
		</script>
	</body>
</html>

二、运行服务和客户端,开启两个客户端页面,测试成功

十三、Net Core6 SignalR入门(一) 

 但这是针对所有在线客户端发送消息,下一篇讲针对群组和个人发送消息文章来源地址https://www.toymoban.com/news/detail-463731.html

到了这里,关于十三、Net Core6 SignalR入门(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序如何使用原生Websocket api与Asp.Net Core SignalR 通信

    如题,这可能算是.net 做小程序的服务端时,绕不开的一个问题,老生常谈了。同样的问题,我记得我2018/19年的一个项目的解决方案是: 修改官方的SignalR.js的客户端 :把里面用到浏览器的Websocket改成微信小程序的官方api的。目前网上也有不少这样的方案,已经改好开源了;

    2024年02月09日
    浏览(65)
  • 什么是 ASP.NET Core SignalR?

    所有连接了 Internet 的应用程序都由服务器和客户端组成。 客户端依赖于服务器获取数据,而它们获取数据的主要机制是通过发出超文本传输协议 (HTTP) 请求来进行的。 某些客户端应用程序需要经常更改的数据。 ASP.NET Core SignalR 提供了一个 API,用于创建服务器到客户端远程过

    2024年02月15日
    浏览(24)
  • asp.net core6 webapi 使用反射批量注入接口层和实现接口层的接口的类到ioc中

    IBLL接口层类库 BLL实现接口层类库 program中利用反射批量注入 在控制器中使用构造函数传参就可以调用已经注册的所有是是实现接口的类了的实列了

    2024年02月13日
    浏览(30)
  • ASP.NET Core实时库SignalR简单应用

    SignalR 是用于构建需要实时用户交互或实时数据更新的Web 应用程序的一个开放源代码.NET 库。不仅仅用在Web应用中,后面会讲到它的应用范围。它简化了简化了构建实时应用程序的过程,包括 ASP.NET Server 库和 JavaScript Client 库,以便管理Client与Server连接并将内容更新推送给Cl

    2024年02月11日
    浏览(62)
  • ASP.NET Core SignalR 系列(二)- 中心(服务端)

    本章将和大家分享 ASP.NET Core SignalR 中的中心(服务端)。 本文大部分内容摘自微软官网:https://learn.microsoft.com/zh-cn/aspnet/core/signalr/hubs?view=aspnetcore-7.0 废话不多说,我们直接来看一个Demo,Demo的目录结构如下所示: 本Demo的Web项目为ASP.NET Core Web 应用程序( 目标框架为.NET 7.0

    2024年02月13日
    浏览(33)
  • ASP.NET Core+Vue3 实现SignalR通讯

    从ASP.NET Core 3.0版本开始,SignalR的Hub已经集成到了ASP.NET Core框架中。因此,在更高版本的ASP.NET Core中,不再需要单独引用Microsoft.AspNetCore.SignalR包来使用Hub。 在项目创建一个类继承Hub, 首先是写一个CreateConnection方法 ConnectionId是SignalR中标识的客户端连接的唯一标识符, 将userId和

    2024年02月06日
    浏览(35)
  • ASP.NET Core SignalR 系列(四)- 中心筛选器

    本章将和大家分享 ASP.NET Core SignalR 中的中心筛选器。 本文大部分内容摘自微软官网:https://learn.microsoft.com/zh-cn/aspnet/core/signalr/hub-filters?view=aspnetcore-7.0 废话不多说,下面我们直接进入本章主题。 中心筛选器: 在 ASP.NET Core 5.0 或更高版本中可用。 允许在客户端调用中心方法之

    2024年02月16日
    浏览(28)
  • ASP.NET Core SignalR 系列(三)- JavaScript 客户端

    本章将和大家分享 ASP.NET Core SignalR 中的 JavaScript 客户端。ASP.NET Core SignalR JavaScript 客户端库使开发人员能够调用服务器端SignalR中心代码。 本文大部分内容摘自微软官网:https://learn.microsoft.com/zh-cn/aspnet/core/signalr/javascript-client?view=aspnetcore-7.0tabs=visual-studio 废话不多说,下面我们

    2024年02月15日
    浏览(34)
  • 服务端使用ASP.NET Core SignalR与Vue3(TypeScript与JavaScript)前端建立通信(以进度条为例)

    1. ASP.NET Core           ASP.NET Core 是一个跨平台、高性能及开源的框架,用于生成基于云且连接互联网的新式应用程式。 官方文档:ASP.NET documentation | Microsoft Learn  2.  ASP.NET Core SignalR         ASP.NET Core SignalR 是开源库,用于服务端与客户端建立实时通信,可以自动管理连接

    2024年02月06日
    浏览(36)
  • .NET Core6.0使用NPOI导入导出Excel

    一、使用NPOI导出Excel //引入NPOI包 HTML JS C# 二、使用NPOI导入Excel HTML JS C# 控制器代码 添加ExcelHelper类 添加Extensions类 添加实体类UserEntity,要跟Excel的列名一致 Excel模板 实现效果

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包