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

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

DDD
Lepaskan: 2025-01-05 13:47:41
asal
772 orang telah melayarinya

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

Memanggil Kaedah Hab Teras SignalR daripada Pengawal Teras Asp.Net

Dalam artikel ini, kami akan meneroka cara menggunakan kaedah Hab Teras SignalR dari dalam pengawal Teras ASP.NET. Fungsi ini membolehkan komunikasi sisi pelayan kepada pelanggan yang disambungkan untuk menyiarkan acara atau mengemas kini data masa nyata.

Tinjauan Keseluruhan Masalah

Dalam senario yang disediakan, ASP.NET Aplikasi teras menerima permintaan daripada perkhidmatan Windows setelah tugas selesai. Tugasnya adalah untuk memberitahu semua pelanggan SignalR Core yang berkaitan tentang acara ini. Walau bagaimanapun, perkhidmatan Windows tidak boleh terus mewujudkan sambungan kepada SignalR.

Penyelesaian 1: Menyuntik HubContext ke dalam Pengawal

Satu pendekatan ialah menyuntik HubContext yang sesuai ke dalam kelas pengawal . Ini membolehkan penggunaan terus kaedah hab daripada kaedah tindakan pengawal.

[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

Pendekatan ini membenarkan komunikasi terus dengan semua pelanggan yang berkaitan, tetapi mungkin mempunyai implikasi prestasi bergantung pada bilangan pelanggan.

Penyelesaian 2: Hab Ditaip dan Antara Muka Pelanggan

Pendekatan lain melibatkan penentuan antara muka pelanggan yang ditaip dan mewarisi daripada Hab yang sepadan dengan antara muka pelanggan yang ditaip. Ini membolehkan suntikan HubContext yang ditaip ke dalam pengawal untuk pemanggilan kaedah tertentu.

Antara Muka Pelanggan Ditaip:

public interface ITypedHubClient
{
    Task BroadcastMessage(string name, string message);
}
Salin selepas log masuk

Hub Mewarisi daripada Antara Muka Pelanggan Ditaip :

public class ChatHub : Hub<ITypedHubClient>
{
    public void Send(string name, string message)
    {
        Clients.All.BroadcastMessage(name, message);
    }
}
Salin selepas log masuk

Pengawal Invokasi Suntikan dan Kaedah:

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

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

    [HttpGet]
    public IEnumerable<string> Get()
    {
        _chatHubContext.Clients.All.BroadcastMessage("test", "test");
        return new string[] { "value1", "value2" };
    }
}
Salin selepas log masuk

Pendekatan ini membolehkan komunikasi yang lebih disasarkan dan cekap dengan pelanggan.

Atas ialah kandungan terperinci Bagaimana untuk Memanggil 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan