使用SignalR同步调用客户端方法

5

如何使用SignalR使Web服务器同步调用客户端方法?关键部分在于服务器应该等待客户端发送数据回到服务器,然后才能继续执行。

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

1个回答

5
SignalR没有提供同步调用客户端方法的方式。
为了实现同步调用的功能,您可以将某种调用ID作为参数传递给客户端方法。当客户端方法完成后,客户端可以使用其调用ID调用ClientMethodCompleted等服务器端方法。基本上,您将会实现自己的ACK。
如果您选择这条路线,则必须在服务器上跟踪客户端调用及其各自的ID。然后,您可以在服务器上的ClientMethodCompleted方法中执行您想要在同步调用之后执行的任何逻辑。
如果您仅在一个客户端上调用该方法,这应该相当简单。如果您在多个客户端上调用该方法,则必须跟踪您正在调用方法的客户端,以便在运行后续代码之前确保所有客户端已确认调用。
如果您担心DOS攻击,我还建议定期清理存储未确认客户端调用的数据结构,因为这可能是一种明显的攻击向量,可以允许恶意客户端使内存消耗失控。

如果我不能达到我想要的目标,这将是我的备选计划。感谢澄清。 - Matt
这个说法现在还正确吗(7年后)?SignalR仍然不允许服务器同步调用客户端方法吗? - Maty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接