ASP.NET Core SingleR:初次体验和简单项目搭建

这篇具有很好参考价值的文章主要介绍了ASP.NET Core SingleR:初次体验和简单项目搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

平常的网页通讯都是基于Http 请求的,特点就是每次请求之后都会关闭,延迟会比较大。如果想做网页游戏,网页聊天等功能,就要用到即时通信。SignalR 就是一种即时通讯的方式。

微软官方|ASP.NET Core SignalR 概述

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

应用场景

我们一般的网络请求都是数据先进数据库,再用网页请求把数据读出来的。

但是对于低延迟,实时性要求的话,就不符合这个逻辑了。因为实时性的话就说明以前的数据不重要,可以丢弃。就跟直播一样,除非人为地去录播,不然前1分钟的视频画面是没人看的,可以直接丢弃的。

这里的直播的意思是实时性的数据,不是斗鱼直播这种视频流的意思。

SignalR 网站长什么样?

Blazor就是用SignalR开发的

ASP.NET Core Blazor 托管模型

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端
我们找一个Blazor的网址看一下

Bootstrap 风格的 Blazor UI 组件库

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

第一个ASP.NET core SignalR程序

确定SignalR版本

微软官方有两个SignalR,一个是基于.net Framework的,一个是基于.NET Core。按照微软的意思,应该是建议我们用core SignalR版本

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

我在网上找了很多的教程,要么就是版本太老,要么就是答非所问。还是照着微软的教程走一遍看看好了。我顺便找了半天找到了微软最新的.net core 8.0的教程

微软官方文档|教程:ASP.NET Core SignalR 入门

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

新建MVC项目

按照微软的意思,开个ASP.NET Core Web,而不是Blazor程序

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端
ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

添加unpkg管理器

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

网上搜了半天,发现要安装一下LibMan

将 LibMan CLI 与 ASP.NET Core 结合使用

dotnet tool install -g Microsoft.Web.LibraryManager.Cli

这个需要连接外网,在内网可能会报错
ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

安装成功
ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

运行一下查看版本,看看是否安装成功

libman --version

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

添加客户端

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端
ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

添加ChatHub文件

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

using Microsoft.AspNetCore.SignalR;

namespace SiganlRTest.Hubs
{
    public class ChatHub : Hub
    {
        public async Task SendMessage(string user, string message)
        {
            await Clients.All.SendAsync("ReceiveMessage", user, message);
        }
    }
}


添加SignalR服务

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

添加网页

@page
<div class="container">
    <div class="row p-1">
        <div class="col-1">User</div>
        <div class="col-5"><input type="text" id="userInput" /></div>
    </div>
    <div class="row p-1">
        <div class="col-1">Message</div>
        <div class="col-5"><input type="text" class="w-100" id="messageInput" /></div>
    </div>
    <div class="row p-1">
        <div class="col-6 text-end">
            <input type="button" id="sendButton" value="Send Message" />
        </div>
    </div>
    <div class="row p-1">
        <div class="col-6">
            <hr />
        </div>
    </div>
    <div class="row p-1">
        <div class="col-6">
            <ul id="messagesList"></ul>
        </div>
    </div>
</div>
<script src="~/js/signalr/dist/browser/signalr.js"></script>
<script src="~/js/chat.js"></script>

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端
ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端
把微软的代码复制进去

"use strict";

var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();

//Disable the send button until connection is established.
document.getElementById("sendButton").disabled = true;

connection.on("ReceiveMessage", function (user, message) {
    var li = document.createElement("li");
    document.getElementById("messagesList").appendChild(li);
    // We can assign user-supplied strings to an element's textContent because it
    // is not interpreted as markup. If you're assigning in any other way, you 
    // should be aware of possible script injection concerns.
    li.textContent = `${user} says ${message}`;
});

connection.start().then(function () {
    document.getElementById("sendButton").disabled = false;
}).catch(function (err) {
    return console.error(err.toString());
});

document.getElementById("sendButton").addEventListener("click", function (event) {
    var user = document.getElementById("userInput").value;
    var message = document.getElementById("messageInput").value;
    connection.invoke("SendMessage", user, message).catch(function (err) {
        return console.error(err.toString());
    });
    event.preventDefault();
});

运行测试

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

浏览器Websocket调试

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端
ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端
发送的消息
ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端
收到的消息
ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端
我们看到报文有很多的信息,那么到底是什么意思呢?这里就得去看SignalR的官方Github库了

SignalR Hub Protocol

type=1

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

简单翻译一下

  • type:为1的时候,是用来消息交互的。不唯一可能是用来确保网络是否稳定
  • invocationId:可选的,用来区分消息的ID
  • target:触发字符串,类似于MQTT里的Token
  • arguments:消息负载,类似于MQTT里的Payload
  • streamIds:可选的,通讯的唯一ID

type=6

type为6的时候,是用来Ping网络情况的

ASP.NET Core SingleR:初次体验和简单项目搭建,ASP.NET Core,asp.net,后端

Type为其它时

type一共有1-9,9种方式,我这里就不展开说明了

总结

接下来我会去研究一下ASP.NET Core的客户端和服务端开发。网上的资料不是很多,只能自己研究一下了。文章来源地址https://www.toymoban.com/news/detail-799151.html

到了这里,关于ASP.NET Core SingleR:初次体验和简单项目搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ASP.NET Core实时库SignalR简单应用

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

    2024年02月11日
    浏览(77)
  • ASP.NET Core 鉴权授权一(简单的Cookie)

    简单的理解:鉴权衡量你能不能进一道门,授权是你进门了可以干什么

    2024年02月03日
    浏览(35)
  • ASP.NET Core 6 (.NET 6) 快速开发简单登陆和登出功能

    ASP.NET Core 6中的简单登录和登出功能,需要使用身份验证和授权中间件实现, 使用Visual Studio 2022或更高版本开发工具,创建一个ASP.NET Core 6 (.NET 6) 项目,项目添加引用 Microsoft.AspNetCore.Authentication.Cookies ,引用方法可以参考: 1)使用Nuget界面管理器 搜索 \\\"Microsoft.AspNetCore.Authe

    2024年02月21日
    浏览(45)
  • asp.net core 框架搭建2-搭建MVC后台管理系统

    作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/131458964 asp.net core 框架搭建2-搭建MVC后台管理系统 ,本文章介绍asp.net core框架搭建,然后开发一个后台管理系统,将一步步带着大家,实现目标。所有操作过程将展现在本篇文章,下面咋们一起来实现它吧。 使

    2024年02月12日
    浏览(64)
  • asp.net core项目发布到 iis上

            我们都知道与传统asp.net 项目比较,ASP.NET Core则完全不同,它并不是运行在IIS的工作进程中,而是独立运行的。它运行于控制台应用程序之中,控制台中则运行了Kestrel Web服务器组件。Kestrel作为一款.NET Web服务器的实现,它在吞吐量性能方面做了很多工作。它可以

    2024年01月21日
    浏览(49)
  • ASP.NET Core Web应用程序项目部署流程

    目录 一、准备ASP.NET Core应用程序部署文件 二、环境配置 三、测试 ASP.NET Core Web 应用程序 四、部署后访问失败问题 以下部署流程都是基于Windows服务器环境下进行的。 一、准备ASP.NET Core应用程序部署文件 使用 Visual Studio 开发工具创建 ASP.NET Core 的Web应用程序,利用VS工具发布

    2024年02月05日
    浏览(63)
  • 前后端分离,Asp.net core webapi 简单 2 步,轻松配置跨域

    可以说,前后端分离已经成为当今信息系统项目开发的主流软件架构模式,微服务的出现,让前后端分离发展更是迅速,大量优秀的前端框架如 vue.js、react 的出现,也让前后端分离趋势加快。 所谓的前后端分离软件架构模式,就是指将前端和后端的开发完全分离,后端负责

    2024年01月17日
    浏览(43)
  • asp.net core 项目从本地部署到远程云服务器

    今天向大家详细介绍一下,如何将一个.net core项目部署到远程云服务器,我的服务器镜像为 window server 2019. 1.安装IIS 首先在服务器上安装IIS(我的是最新的iis10),我已经安装完毕,这个安装操作比较简单,自行谷歌。 安装完成后会看到下面的界面: 2.安装web deploy程序 该程序的功能: 它

    2023年04月22日
    浏览(48)
  • asp.net core框架搭建1-搭建webapi,对数据增删改查接口模板(附源码)

    作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/131458922 asp.net core 框架搭建2-搭建webapi ,本文章介绍asp.net core webapi框架搭建,然后开发增删改查和工具接口,将一步步带着大家,实现目标。所有操作过程将展现在本篇文章,下面咋们一起来实现它吧。 asp.ne

    2024年02月13日
    浏览(47)
  • 如何将 ASP.NET Core MVC 项目的视图分离到另一个项目

    在当下这个年代 SPA 已是主流,人们早已忘记了 MVC 以及 Razor 的故事。但是在某些场景下 SSR 还是有意想不到效果。比如某些静态页面,比如追求首屏加载速度的时候。最近在项目中回归传统效果还是不错。 有的时候我们希望将视图(Views)从主项目中分离出来,以提高项目的

    2024年04月22日
    浏览(64)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包