Abp vNext+SignalR

我的项目基于 ABP vNext (版本 8.2.0) + Blazor + SQL Server。从官网下载的模板默认不包含 SignalR,因此这里记录了如何在 ABP vNext 中集成 SignalR 实现实时通信的过程。以下是一个详细的集成步骤指南:

1. 安装所需的 NuGet 包

官方文档:https://abp.io/docs/latest/framework/real-time/signalr

在项目文件夹(.csproj 文件)中打开一个命令行窗口,然后键入以下命令:

abp add-package Volo.Abp.AspNetCore.SignalR

2. 创建 SignalR Hub

[HubRoute("/signalr-hubs/my-chat")]
public
class MyChatHub : Hub { public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); } }

3. 创建前端客户端

复制代码
const connection = new signalR.HubConnectionBuilder()
    //.withUrl("/my-chat")
  .withUrl("http://localhost:8011/signalr-hubs/my-chat") 
  .build();

connection.on("ReceiveMessage", (user, message) => {
    console.log(user + ": " + message);
});

connection.start().catch(err => console.error(err));

function sendMessage(user, message) {
    connection.invoke("SendMessage", user, message).catch(err => console.error(err));
}
复制代码

* 前端如何需要通过WebSocket访问,可以在“XXX.XXX.Application”的XXXApplicationModule中加以下代码

复制代码
public override void ConfigureServices(ServiceConfigurationContext context)
{
  Configure<AbpSignalROptions>(options =>
    {
            options.Hubs.Add(
                new HubConfig(typeof(MyChatHub),
                    "my-chat",
                    hubOptions =>
                    {
                        hubOptions.Transports = HttpTransportType.WebSockets;
                    }
                ));
      });
}

复制代码

 * 默认是有跨域验证的,需要在appsettings.json文件中修改相关项(如果是跨域访问signalr)

{
    "App": {
        "SelfUrl": "http://localhost:8011",
        "RedirectAllowedUrls": "http://localhost:8011",
        "CorsOrigins": "https://*.Test.com,http://localhost:30001,http://localhost:8080"
    },
...
}

 

posted @   Hi.wz  阅读(186)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示