是否可以在 Azure 上使用 SignalR 在 .Net Core 和 MVC5 之间进行通信?
Is it possible to use SignalR on Azure to communicate between .Net Core and MVC5?
我创建了一个 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
.网核
https://<redacted>.service.signalr.net/client/negotiate?hub=messagehub&asrs.op=%2Fmessagehub&asrs_request_id=NmhXZHcGAAA%3D
并想知道这是否是原因,但我看不到更改 MVC5 op 名称的方法,因为它是推断的。
显然,我们将在某个阶段升级 MVC5 应用程序,因此在此期间这将是理想的选择。
您在这里使用了两种不同类型的 SignalR。一个是用于 .NET Core 的新 SignalR,另一个是用于 .NET Framework 应用程序的旧 SignalR。您可以在此 microsoft documentation.
上看到两者之间的差异
由于这是 SignalR 的两个不同实现,这就是它们彼此不通信的原因。 Azure SignalR 更多的是帮助你扩展你的 SignalR 实例,而不用担心粘性会话、Redis 背板配置和其他基础设施。
我创建了一个 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
.网核
https://<redacted>.service.signalr.net/client/negotiate?hub=messagehub&asrs.op=%2Fmessagehub&asrs_request_id=NmhXZHcGAAA%3D
并想知道这是否是原因,但我看不到更改 MVC5 op 名称的方法,因为它是推断的。
显然,我们将在某个阶段升级 MVC5 应用程序,因此在此期间这将是理想的选择。
您在这里使用了两种不同类型的 SignalR。一个是用于 .NET Core 的新 SignalR,另一个是用于 .NET Framework 应用程序的旧 SignalR。您可以在此 microsoft documentation.
上看到两者之间的差异由于这是 SignalR 的两个不同实现,这就是它们彼此不通信的原因。 Azure SignalR 更多的是帮助你扩展你的 SignalR 实例,而不用担心粘性会话、Redis 背板配置和其他基础设施。