.Net 客户端可以与 azure signalR 服务通信吗?

Can .Net Client communicate with azure signalR service?

我刚开始使用 Azure signalR 服务,我有点困惑。

问题是我正在使用 .Net 4.8 客户端和带有自托管集线器的 javascript 客户端。

对于 .net 客户端,这是代码:

using Microsoft.AspNet.SignalR.Client;
{
    public class SignalRHub : ISignalRHub
    {
        private const string HubName = "Hub";
        private readonly IHubProxy hub;
        private readonly HubConnection connection;

        public SignalRHub(string signalRUrl)
        {
            connection = new HubConnection(signalRUrl);
            connection.StateChanged += Connection_StateChanged;
            hub = connection.CreateHubProxy(HubName);
            connection.Start().Wait();
        }
        private void Connection_StateChanged(StateChange obj)
        {
            ...
        }

        public void Refreshed(string userId, string mId)
        {
                    hub.Invoke("refreshed", uId, mId);
        }
    }
}

signalRUrl 是这样的“http://localhost:8081/signalr”

集线器启动文件实现如下:

        {
            var hubConfiguration = new HubConfiguration
            {
                EnableDetailedErrors = true,
            };

            // Any connection or hub wire up and configuration should go here
            app.MapSignalR("/signalr", hubConfiguration);
 }

这是集线器文件

using Microsoft.AspNet.SignalR;

{
    public class Hub: Hub
    {
        public void Refreshed(string userId, string mId )
        {
            Guid userIdAsGuid;
            if (Guid.TryParse(userId, out userIdAsGuid))
            {
                Clients.Group(userId).Refresh(mId);
            }
        }

        public void JoinGroup(string groupName)
        {
            Groups.Add(Context.ConnectionId, groupName);
        }
    }
}

上面的代码工作正常,我没有遇到任何问题。 我的问题是我想迁移到 Azure SignalR 服务。我使用了这个文档 https://docs.microsoft.com/en-us/azure/azure-signalr/signalr-quickstart-dotnet

我把启动码改成了

 app.MapAzureSignalR(this.GetType().FullName, hubConfiguration);

我添加了端点,对于 javascript 客户端,我将其更新为 jquery.signalR-2.4.1 并且工作正常(正在创建套接字)

但是,对于 .net 客户端,没有指示是否更改以及它是否真的与其兼容。

所以我目前拥有的是一个半工作的应用程序: javascript 端工作并向 azure Signalr 服务发送请求(它可以使用 JoinGroup)但是没有响应,.net 客户端似乎没有与集线器通信(在 Azure SignalR 服务平台上没有添加新客户)

由于我是这个概念的新手,我相信我可能由于兼容性问题而遗漏了一些要点,所以我将不胜感激任何关于这个问题的澄清。

谢谢

所以我弄清楚了问题所在,似乎 .net v4.7 和 .net v4 之间存在包不兼容问题。我将所有包迁移到以下:

  • 包 id="Microsoft.AspNet.SignalR" 版本="2.4.1" targetFramework="net48"
  • 包 id="Microsoft.Azure.SignalR.AspNet" 版本="1.13.0" targetFramework="net48"
  • package id="Microsoft.AspNet.SignalR.Client" version="2.4.2" targetFramework="net48"

谢谢大家的帮助。