SignalR 和 Pusher Channels 最终都使用 websocket 向客户端传递消息,因此两者都应该满足您向客户端实时传递消息的要求。
1) 这两种产品也满足您对两个库支持的要求:
SignalR 支持 .NET:
https://dotnet.microsoft.com/apps/aspnet/signalr https://dotnet.microsoft.com/apps/aspnet/signalr
Pusher Channels 为 Nodejs 和 .NET 提供服务器支持:
https://github.com/pusher/pusher-http-node https://github.com/pusher/pusher-http-node
https://github.com/pusher/pusher-http-dotnet https://github.com/pusher/pusher-http-dotnet
2) 这两种产品还满足您通过 TLS/WSS 发送消息的要求:
SignalR:
https://kimsereyblog.blogspot.com/2018/07/signalr-with-asp-net-core.html https://kimsereyblog.blogspot.com/2018/07/signalr-with-asp-net-core.html
推杆通道:
保护 Pusher 消息的安全 https://stackoverflow.com/questions/57901908/securing-pushers-messages
就它们之间的差异而言,这取决于您的实现,如果您只是在自己的 ISS 服务器上运行 SignalR,那么您将需要管理所有 Websocket 连接以及随之而来的所有扩展挑战。
然而,与 Channels 的工作方式类似,SignalR 也有托管的 websocket 服务,因此您不需要管理连接或扩展。您只需使用要发送到 Channels 或 SignalR 的消息发出 API 请求,然后该消息将广播到通过 Websocket 连接的感兴趣的客户端。在这种情况下,您不需要自己管理 websocket 连接。
然而,就定价而言,渠道似乎更具竞争力(尤其是免费产品),因此,如果您正在考虑托管产品,渠道似乎是一个更好的价值主张:
https://azure.microsoft.com/en-gb/pricing/details/signalr-service/ https://azure.microsoft.com/en-gb/pricing/details/signalr-service/
https://pusher.com/channels/pricing https://pusher.com/channels/pricing
两种产品在实现方面看起来非常相似(假设您使用的是托管服务)。如果您在 ISS 上实施 SignalR,复杂性会增加:
https://learn.microsoft.com/en-us/aspnet/core/signalr/scale?view=aspnetcore-2.2 https://learn.microsoft.com/en-us/aspnet/core/signalr/scale?view=aspnetcore-2.2
在支持方面,Pusher 提供免费的应用程序支持:
https://support.pusher.com/hc/en-us https://support.pusher.com/hc/en-us
希望这可以帮助!