Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mendapat Kaedah Hab Teras SignalR daripada Pengawal Teras ASP.NET?

Bagaimana untuk Mendapat Kaedah Hab Teras SignalR daripada Pengawal Teras ASP.NET?

Barbara Streisand
Lepaskan: 2025-01-05 05:55:44
asal
789 orang telah melayarinya

How to Invoke SignalR Core Hub Methods from an ASP.NET Core Controller?

Menggunakan Kaedah Hab Teras SignalR daripada Pengawal

Dalam aplikasi Teras ASP.NET, kadangkala perlu menggunakan kaedah Hab daripada pengawal. Contohnya, apabila perkhidmatan luaran melaksanakan tugas dan perlu memberitahu pelanggan yang disambungkan melalui SignalR.

Penyelesaian 1 (Dinamik)

Jika anda menggunakan perpustakaan Microsoft.AspNetCore.SignalR (versi 1.0.0-alpha2-final), anda boleh menyuntik IHubContext Hab anda ke dalam pengawal anda. Berikut ialah contoh:

[Route("API/vardesigncomm")]
public class VarDesignCommController : Controller
{
    [HttpPut("ProcessVarDesignCommResponse/{id}")]
    public async Task<IActionResult> ProcessVarDesignCommResponse(int id)
    {
        await this.HubContext.Clients.All.InvokeAsync("Completed", id);
        return new JsonResult(true);
    }

    private IHubContext<VarDesignHub> HubContext
    { get; set; }
}
Salin selepas log masuk

Penyelesaian 2 (Ditaip)

Pertimbangkan untuk mencipta antara muka untuk menentukan kaedah yang boleh digunakan oleh pelayan pada hab klien. Pendekatan ini dikenali sebagai "titik akhir hab ditaip":

public interface ITypedHubClient
{
    Task TaskCompleted(int id);
}

public class VarDesignHub : Hub<ITypedHubClient>
{
    public Task TaskCompleted(int id) => Clients.All.InvokeAsync("Completed", id);
}
Salin selepas log masuk

Dalam pengawal anda, masukkan HubContext yang ditaip dan gunakan kaedah:

[Route("API/demo")]
public class DemoController : Controller
{
    private IHubContext<VarDesignHub, ITypedHubClient> _chatHubContext;

    public DemoController(IHubContext<VarDesignHub, ITypedHubClient> chatHubContext)
    {
        _chatHubContext = chatHubContext;
    }

    [HttpGet]
    public IActionResult TaskCompleted(int id)
    {
        _chatHubContext.Clients.All.TaskCompleted(id);
        return Ok();
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mendapat Kaedah Hab Teras SignalR daripada Pengawal Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan