2015-06-15 52 views
0

我有几个SignalR Hub,每个都有几种方法。大多是像签名CRUD即SignalR方法名是否可以命名空间?

string AddNode(Node node); 
void RemoveNode(string id); 
void UpdateNode(Node node); 

Node GetNode(string id); 
List<Node> GetNodes(); 

现在,每一个现在,然后我有更多的方法添加到集线器或添加过载事情开始玩起来。错误的方法会被调用,我只是可以弄清楚发生了什么。我通常最终会创建一个新的Hub来处理新的方法。

我可以把它放下来的唯一的事情是我的方法名称中有一个名称空间,如下所示;

[HubMethodName(XPortConst.Methods.GetNode)] 
public void GetNode(SRGetNodeReq req) 
{ 
    ... 
} 

其中

public const string XportConst.Methods.GetNode = "Xport.Method.GetNode"; 

因此,可以在HubMethodName给予与它 “点” 的字符串?

可能我的所有方法都有名称“XPort”,并且由于方法参数不同而仍然可以工作?

+0

@DDan指出下面,在JS代码中的点是行不通的!我一直在使用C#客户端,但这是一个很好的观点。 –

回答

0

比方说,你这样做

​​

这意味着你会打电话从JS代码这种方法nodeHub.server.A.B.C(req); 你产生signalr /集线器类必须声明一个名为ABC

proxies['nodeHub'].server = { 
      A.B.C: function() { 

功能,将无法使用Uncaught SyntaxError: Unexpected token . 您不能有'​​。'在JS函数名称中。

如何替换为'_'? A_B_C在这种情况下不会有问题。 另外,我会说创建多个Hub类实际上并不是一件坏事。

+0

嘿,我应该提到我只需要C#客户端,但这是一个很好的观点。如果我确实想使用JS客户端,那么它从一开始就会失败。我将单独删除名称空间。 –