Как получить сообщение от ядра asp.net, используя ядро ​​signalR в UWP - PullRequest
0 голосов
/ 08 декабря 2018

Ядро SignalR было демонстрационным с клиентом javascript или Angular. Мой случай использует UWP для визуализации внешнего интерфейса.В то время как Microsoft только говорит, как вызвать сообщение от клиента к серверу, в Документах не показано, как получить сообщение [https://docs.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 framework и мог бы показать мне способ получения сообщения с сервера, который я сделал?

1 Ответ

0 голосов
/ 08 декабря 2018

Извините, я изначально неправильно понял и перевернул его.

Для связи между сервером и клиентом вы должны следовать документации здесь .

Вам необходимо определить слушателя в 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>, позволяющая создать метод с типом возврата.

...