【问题标题】:Is it possible to use SignalR on Azure to communicate between .Net Core and MVC5?是否可以在 Azure 上使用 SignalR 在 .Net Core 和 MVC5 之间进行通信?
【发布时间】:2019-10-25 13:15:45
【问题描述】:

我创建了一个 AzureSignalR 实例和 2 个客户端应用程序。一个是 MVC5、.Net 4.7.2 应用程序,另一个是 .Net Core 2.2。我在两者中都创建了一个相同的 SignalR Hub,这很简单

    public class MessageHub : Hub
    {
        public void Send(ApplicationEvent evt)
        {
            // broadcastMessage must be a javascript method on the client
            Clients.All.broadcastMessage(evt);
        }
    }

并在两者上实现了必要的 javascript。我遇到的问题是,虽然每个应用程序可以分别发送和接收消息,但它们不会接收另一个应用程序提出的消息。

我可以看到对 AzureSignalR 服务的请求略有不同,因为 asrs.op 参数中的值不同,即

MVC5

https://<redacted>.service.signalr.net/aspnetclient/negotiate?clientProtocol=2.1&_=1572008814078&asrs_request_id=1tgsLXwGAAA%3D&asrs.op=%2Fsignalr&connectionData=%5B%7B%22name%22%3A%22messagehub%22%7D%5D

.Net 核心

https://<redacted>.service.signalr.net/client/negotiate?hub=messagehub&asrs.op=%2Fmessagehub&asrs_request_id=NmhXZHcGAAA%3D

并想知道这是否是原因,但我看不到一种方法来更改推断的 MVC5 操作名称。

显然,我们将在某个阶段升级 MVC5 应用程序,因此这将是过渡时期的理想选择。

【问题讨论】:

    标签: signalr signalr-hub asp.net-core-signalr azure-signalr


    【解决方案1】:

    您在这里使用了两种不同类型的 SignalR。一个是用于 .NET Core 的新版本,另一个是用于 .NET Framework 应用程序的旧 SignalR。您可以在此microsoft documentation. 上看到两者之间的差异

    由于这是 SignalR 的两种不同实现,这就是它们不相互通信的原因。 Azure SignalR 更能帮助你扩展 SignalR 实例,而无需担心粘滞会话、Redis 背板配置和其他基础设施。

    【讨论】:

    • 欣赏答案,我之前看过那个页面,但我想我是否可以在两个应用程序之间使用相同的 SignalR 集线器,但我开始认为这是不可能的,所以我会将此标记为已接受。谢谢。
    猜你喜欢
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多