除了响应信号 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
,应该有多个样本你可以参考。
我在 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
,应该有多个样本你可以参考。