signalr - 是否可以在 Azure 上使用 SignalR 在 .Net Core 和 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
.Net 核心
https://<redacted>.service.signalr.net/client/negotiate?hub=messagehub&asrs.op=%2Fmessagehub&asrs_request_id=NmhXZHcGAAA%3D
并想知道这是否是原因,但我看不到一种方法来更改推断的 MVC5 操作名称。
显然,我们将在某个阶段升级 MVC5 应用程序,因此在此期间这将是理想的。
解决方案
您在这里使用两种不同类型的 SignalR。一个是用于 .NET Core 的新版本,另一个是用于 .NET Framework 应用程序的旧 SignalR。您可以在此microsoft 文档中查看两者之间的差异。
由于这是 SignalR 的两种不同实现,这就是它们不相互通信的原因。Azure SignalR 更多地用于帮助您扩展 SignalR 实例,而无需担心粘滞会话、Redis 背板配置和其他基础设施。
推荐阅读
- javascript - Open API specification for Azure functions using JavaScript (Node js)
- shell - 如何使用 shell 命令从 csv 文件中提取列数据
- java - 使用递归反转 int
- python - While loop stops working but the process continues running in python
- java - How to make a timer wait for a response?
- r - R / dplyr:在可连接列上连接两个具有宽格式和长格式的表
- ios - CloudFront URL failed to play in iOS
- r - 计算R中和的平方矩阵
- android - 似乎无法让我的适配器将我的列表添加到 recyclerView
- android - OpenGL 纹理到 AHardwareBuffer