2013-05-18 34 views
1

我读过here约signalR的响应消息的结构:signalR消息结构标志说明?

例如

  • 对于PersistentConnection

    {"C":"B,2CE|K,C|L,2|M,0|I,0|J,0","M":["foo"]}

Persistent Response: 
C - cursor 
M - Messages 
T - Timeout (only if true) value is 1 
D - Disconnect (only if true) value is 1 
R - All Groups (Client groups should be reset to match this list exactly) 
G - Groups added 
g - Groups removed 

问题#1

这有什么错发送消息部分?为什么我需要所有的“C”信息?客户端只需要该消息。一个消息号码#N是而不是依赖于消息号#N-1(AFAIK) - 所以我没看到这个“C”部分的原因。 (并且我假设我在这里错过了一些东西我错了)。

问题2

即使这样,我怎么能理解的标记是什么意思?我在手册中没有看到“K,L,I,J,2CE”令牌。

哪里/我如何理解他们在说什么?如果我不想让服务器发送该信息,但仅发送消息,该怎么办?

回答

6

开放源代码有一个经常看过的功能。您可以简单地下载源代码并进行环顾。通过在源代码中搜索字符串“R”,我可以找到你正在寻找的一些信息。

答案#2: 这些简写属性名称直接映射到SignalR中对象的JsonSerialization。 HubResponse

  • 的S - 国家
  • 的R - 结果
  • 我 - 编号
  • ë - 错误
  • 笔 - 堆栈跟踪

PersistantResponse

  • L - LongPollDelay
  • d - 断开
  • 笔 - TIMEDOUT
  • 摹 - GroupsToken

一些别人都没有在当前的代码库中发现,自从你提到的问题,7个月我猜他们已经被重构了。

答案#1: 元数据对于SignalR如何操作很重要。框架的双刃剑是我们将域或其解决方案卸载到框架及其创建者,并且我们隐含地同意让他们成为域专家。有时候,如果你想看看每个属性实际用于下载源代码并遵循代码,那么它有点像黑盒子一样。如果出于某种性能原因,您觉得需要修剪掉一些代码,以确定是否存在无关的代码并给它一个镜头。

+2

@Gent史诗般的答案:) – davidfowl

+1

@dfowler教一个人钓鱼;) – Gent