Signalr 是否仍然可以查看ClientProxy的可用客户端函数?

Signalr 是否仍然可以查看ClientProxy的可用客户端函数?,signalr,Signalr,我目前正在调试一个大型应用程序,该应用程序存在一些与客户端端点上的服务器端调用相关的错误,这些错误不会导致客户端调用。从调试的角度来看,我有点迷路了。它将帮助我查看可用客户端功能的列表,但这可能不可用。从tracelog的角度来看,我没有看到任何条目显示函数调用有任何错误(system.diagnosticsentry) 关于单元测试或调试策略有什么想法吗 <switches> <add name="SignalRSwitch" value="Verbose" />

我目前正在调试一个大型应用程序,该应用程序存在一些与客户端端点上的服务器端调用相关的错误,这些错误不会导致客户端调用。从调试的角度来看,我有点迷路了。它将帮助我查看可用客户端功能的列表,但这可能不可用。从tracelog的角度来看,我没有看到任何条目显示函数调用有任何错误(
system.diagnostics
entry)

关于单元测试或调试策略有什么想法吗

<switches>
  <add name="SignalRSwitch" value="Verbose" />
</switches>
<!-- Specifies the trace writer for output -->
<sharedListeners>
  <!-- Listener for transport events -->
  <add name="SignalR-Transports" type="System.Diagnostics.TextWriterTraceListener" initializeData="transports.log.txt" />
  <!-- Listener for scaleout provider events -->
  <add name="SignalR-Bus" type="System.Diagnostics.TextWriterTraceListener" initializeData="bus.log.txt" />
  <!-- Listener for hub discovery events -->
  <add name="SignalR-Init" type="System.Diagnostics.TextWriterTraceListener" initializeData="init.log.txt" />
</sharedListeners>
<trace autoflush="true" />

AFAIK,至少服务器上的,不是。客户端上定义的用于处理服务器到客户端调用的代码只是一堆服务器完全不知道的事件处理程序。理论上,您可以有多个客户端代码段,每个代码段都有不同的处理程序,而服务器无法了解所有这些代码。这将是完全合法的,并且更容易理解为什么不可能知道你想要什么

幕后信号器只是将每个服务器的消息发送到客户端调用,其中每个消息都有一些字段,其中一个字段包含要触发的事件的客户端名称。因此,服务器只是发送字符串并忘记它们,客户端接收字符串并动态检查是否存在该名称的处理程序


如果客户端上不存在
foo
,您的目标是避免调用类似
Clients.All.foo(“bar”)
的东西吗?也许代码中有几个地方可能会发生这种情况,所以在重新组织/重构内容时很难控制动态调用?如果是,那么一个建议是定义一个新的C#类型,并将服务器上的每个动态调用集中在该类型的相应方法中。通过使用该类型的实例(也可以是静态的),您的集线器或通过
IHubContext
的调用不可能出错,并且您可以将动态调用集中在一个地方。当然,这并不能完全解决问题,但有助于控制它,因为动态调用只在一个地方,使它们与客户端代码保持一致变得更容易。

有一些库包装SignalR,使其更静态。我是一个叫做

它是一个pub/sub包装器,消息是C#类,使用动态脚本代理给客户端(非常类似于中心代理)