Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# signalr

作者:殘月殺手   发布日期:2026-02-28   浏览:5

// SignalR 示例代码

// 1. 创建一个 Hub 类
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;

public class ChatHub : Hub
{
    // 定义客户端可以调用的方法
    public async Task SendMessage(string user, string message)
    {
        // 调用所有连接的客户端上的 ReceiveMessage 方法
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}

// 2. 配置 SignalR 在 Startup.cs 中
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // 添加 SignalR 服务
        services.AddSignalR();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseRouting();

        // 映射 SignalR 路由
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapHub<ChatHub>("/chathub");
        });
    }
}

// 3. 客户端 JavaScript 代码 (使用 SignalR JavaScript 客户端库)
<script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/5.0.9/signalr.min.js"></script>
<script>
    const connection = new signalR.HubConnectionBuilder()
        .withUrl("/chathub")
        .build();

    // 启动连接
    connection.start().then(function () {
        console.log("Connected to SignalR hub");
    }).catch(function (err) {
        console.error(err.toString());
    });

    // 定义接收消息的方法
    connection.on("ReceiveMessage", function (user, message) {
        const msg = `${user}: ${message}`;
        console.log(msg);
    });

    // 发送消息
    function sendMessage(user, message) {
        connection.invoke("SendMessage", user, message).catch(function (err) {
            return console.error(err.toString());
        });
    }
</script>

解释说明:

  1. 创建 Hub 类ChatHub 继承自 Hub,并定义了一个 SendMessage 方法,该方法可以被客户端调用来发送消息。Clients.All.SendAsync 用于将消息广播给所有连接的客户端。

  2. 配置 SignalR:在 Startup.cs 中,通过 services.AddSignalR() 添加 SignalR 服务,并使用 endpoints.MapHub<ChatHub>("/chathub") 将 Hub 映射到 /chathub 路径。

  3. 客户端 JavaScript 代码:使用 SignalR 的 JavaScript 客户端库来建立与服务器的连接,并定义了 ReceiveMessage 方法来处理从服务器接收到的消息。sendMessage 函数用于向服务器发送消息。

希望这个示例能帮助你理解如何在 C# 中使用 SignalR 实现实时通信功能。

上一篇:c# restsharp

下一篇:c# nmodbus

大家都在看

c# 二进制

c# 创建目录

c# datatable group by

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

.net和c#

c#获取系统时间

c#游戏开发

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站