SignalR 消息从客户端到服务器

Roe*_*t M 3 c# signalr asp.net-web-api2 asp.net-core

我有一个在 azure 中运行的 Web api,以及在本地本地运行的 Windows 服务。这些“客户端”通过 Web API 登录 Hub。当 api 向所有客户端发出命令时,一切都会受到好评。这里没有问题。但是,是否可以将信号从客户端的同一个 websocket 发送到服务器,即从 Windows 服务发送到 Web api?现在我的服务调用 Web api 上的控制器,但这感觉是多余的,因为已经有一个可用的 Websocket,对吧?

我对 signalR 有点陌生,所以任何帮助将不胜感激。

谢谢!

cro*_*oxy 6

您可以使用以下方法来实现此Invoke目的:

var hubConnection = new HubConnection("http://localhost:1235/");
var hub = hubConnection.CreateHubProxy("myHub");

await hubConnection.Start();

hub.Invoke("MethodName", params...);
Run Code Online (Sandbox Code Playgroud)

创建集线器连接后,您可以从客户端调用方法调用,Invoke第一个参数是方法名称(您要调用的服务器上的方法)作为字符串,并且params您可以向该方法发送一些参数。
如果调用的方法有返回类型,则可以将其指定为 generic <>:

var result = hub.Invoke<MyReturnType>("MethodName", params...);
Run Code Online (Sandbox Code Playgroud)