有没有办法连接到ASP中内置的SignalR Hub。 NET从其他应用程序?

时间:2019-01-10 00:16:08

标签: c# jquery asp.net asp.net-mvc

为了实现实时在线聊天,我已经有一些使用ASP .NET MVC和SignalR的Web应用程序。 我有SignalR ChatHub : Hub,并从客户端连接到该集线器,如下所示: let hub = $.connection.chatHub,并且运行良好。 如果我想在桌面应用程序中使用该中心怎么办?这甚至可能吗,这是一个好习惯吗?如果是,我该如何连接?有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

存在一个.NET SignalR客户端,该客户端可用于允许桌面应用程序连接到SignalR集线器。可从NuGet获得。

配置客户端以与您的Web客户端相同的方式连接到集线器,并且无论平台如何,所有连接的用户之间都将共享消息。

SignalR集线器和客户端必须为相同版本(请参见此处:Connect to SignalR server in dotnet core from .NET client)。

.NET 4.5 +

对于4.5以上版本的.NET(不包括.NET Core),您需要较旧的客户端:Microsoft.AspNet.SignalR.Client

此处提供了文档和代码示例:https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-net-client

ASP.NET Core

如果您的MVC应用程序使用的是ASP.NET Core,请改用此软件包:Microsoft.AspNetCore.SignalR.Client

您可以在此处找到文档:https://docs.microsoft.com/en-us/aspnet/core/signalr/dotnet-client?view=aspnetcore-2.2

示例-从桌面应用程序客户端调用服务器方法

以下来自.NET 4.5+文档:

// Connect
var hubConnection = new HubConnection("http://www.contoso.com/");
IHubProxy stockTickerHubProxy = hubConnection.CreateHubProxy("stockTicker");
await hubConnection.Start();

// Call server method "JoinGroup" from client
stockTickerHubProxy.Invoke("JoinGroup", "SignalRChatRoom");