5

Web 服务器如何使用 SignalR 同步调用客户端上的方法?这里的关键部分是服务器在继续之前应该等待客户端将数据发送回服务器吗?

基本上,我希望将客户端方法调用视为 WCF 服务请求。调用客户端,等待数据返回。

4

1 回答 1

5

SignalR 不提供同步调用客户端方法的方法。

要实现与同步调用相同的功能,您可以将某种调用 ID 作为参数传递给客户端方法。然后,当客户端方法完成时,客户端可以使用其调用 ID 调用像 ClientMethodCompleted 这样的服务器端方法。基本上,您将实现自己的 ACK。

如果你走这条路,你将不得不在服务器上跟踪客户端调用以及它们各自的 ID。然后,您可以在服务器上的 ClientMethodCompleted 方法中执行同步调用后执行的任何逻辑。

如果您只在一个客户端上调用该方法,这应该相当简单。如果您在多个客户端上调用该方法,则必须跟踪您在哪些客户端上调用您的方法,以便确保所有客户端在运行后续代码之前都已确认调用。

如果您完全担心 DOS 攻击,我还将确保您定期清理存储未确认客户端调用的数据结构,因为这将是一个明显的攻击向量,可能允许恶意客户端破坏内存消耗。

于 2013-01-07T20:15:28.243 回答