如何使用signalR核心从asp.net核心接收消息到UWP



SignalR核心使用javascript客户端或Angular进行了演示我的案例是使用UWP来渲染前端。虽然微软只告诉如何从客户端到服务器调用消息,但它的文档并没有显示如何接收消息[https://learn.microsoft.com/en-us/aspnet/core/signalr/dotnet-client?view=aspnetcore-2.2][1]

这是我的服务器:

public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddSingleton<IInventoryServices, InventoryServices>();
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseSignalR(route =>
{
route.MapHub<MessageHub>("/hub");
});
app.UseMvc();
}
}

这是控制器:

[Route("api/hub")]
[ApiController]
public class MessController : Controller
{
private IHubContext<MessageHub> _messhubContext;
public MessController(IHubContext<MessageHub> messhubContext)
{
_messhubContext = messhubContext;
}
public ActionResult Post()
{
_messhubContext.Clients.All.SendAsync("send", "Strypper", "Howdy");
System.Diagnostics.Debug.WriteLine("I'm here");
return Ok();
}

这里是枢纽:

public class MessageHub : Hub
{
public Task Send(string user ,string message)
{
return Clients.All.SendAsync("Send", user, message);
}
}

我的"PostMan"搞砸了,我不想讨论它。这里有没有人能用uwp框架向我展示从我制作的服务器接收消息的方法?

对不起,我原来误解了,把它转过来了。

对于服务器到客户端的通信,您必须遵循此处的文档。

您需要在UWP中定义一个监听器,如下所示:

connection.On<string, string>("ReceiveMessage", (user, message) =>
{
//do something
});

并在服务器端发送这样的消息:

await Clients.All.SendAsync("ReceiveMessage", user,message);

上一个答案

要从客户端调用Hub方法,可以使用InvokeAsync方法:

await connection.InvokeAsync("MyMethod", "someparameter");

然后您只需在Hub类中创建方法

public class MessageHub : Hub
{
public Task Send(string user ,string message)
{
return Clients.All.SendAsync("Send", user, message);
}
public Task MyMethod(string parameter)
{
//do something here
}
}

还有一个InvokeAsync<TResult>重载,它允许您创建一个具有返回类型的方法。

最新更新