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