除了响应信号 R 服务器中的客户端之外,我如何执行一些命令操作?

How do I perform some command action other than responding to the client within a signal R server?

我在 Asp .Net Core 上有一个自托管信号 R 服务器 运行,我的集线器 class 从客户端接收消息。我想在收到消息后执行一些命令操作,例如调整我的设备的摇摄和倾斜。我见过的每个例子都只与客户沟通。我将 SignalR 用作没有网页的实时协议,因此希望其他组件能够连接到从集线器生成的事件中。

我的启动class如下

namespace SignalRServer
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSignalR();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapHub<ChatHub>("/myControllerHub");
            });
        }
    }
}

而我的controller hub如下

using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;

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

我不太熟悉网络应用程序,但我知道 Signal R 是基于网络的实时通信的不错选择。任何帮助表示赞赏。

谢谢

编辑: 也许执行命令动作的组件应该是另一个客户端,而不是让服务器执行动作?

SignalR 使用集线器在客户端和服务器之间进行通信。集线器是一种高级管道,允许客户端和服务器相互调用方法。在服务器代码中,您定义了客户端调用的方法。在客户端代码中,您定义从服务器调用的方法。 SignalR 负责幕后的一切,使实时客户端到服务器和服务器到客户端的通信成为可能。有关使用 SignalR 的更多详细信息,请查看以下文章:

Use hubs in SignalR for ASP.NET Core

Get started with ASP.NET Core SignalR

I would like to perform some command action upon receipt of messages, such as adjust the pan and tilt of my device. Every example I have seen only communicates back to clients. I am using SignalR as a realtime protocol without a web page and so would like other components to hook into events that get generated from the hub.

在hub方法中,可以做命令动作(比如CRUD动作),然后将更新后的信息发送给客户端(Call client methods from hub)。此外,您还可以在客户端通过Ajax执行命令动作,然后在success函数中,使用SignalR向其他客户端发送通知消息,让他们更新内容。它类似于聊天应用程序。你也可以在网上搜索data update using asp net core signalr example,应该有多个样本你可以参考。