2012-06-17 103 views
1

我一直在试图在维基上看这样做,我正在关注它,但我似乎失去了一些东西?SignalR客户端连接问题?无法通过HubConnection连接到路径()

所以这里是我在:

我有一个客户端JS在本地工作正常。 我现在想通过API发送一些东西来更新客户端版本。我应该使用SignalR Client吗?

这是我有:

var connection = new HubConnection("http://localhost/test/echo", useDefaultUrl: false); 

的Global.asax

RouteTable.Routes.MapConnection<MyConnection>("echo", "echo/{*operation}"); 

我相处没有取消标记的行声明错误.... 难道我没有打我的HubConnection页面?

如果你需要我澄清让我知道。 谢谢,

UPDATE:

谢谢回答!我仍然不确定Hub如何与持续连接进行通话?

这是我迄今为止...

namespace ConnectionHubDemo{ 

public class ChatHub : Hub 
{ 
    public void SendMessage(string message) 
    { 
     Clients.NewMessage(message); 
    } 
} 
public class ConnectionHub 
{ 
    public string test(string data) 
    { 
     //Will this talk to my PersistentConnection? 
     var connection = new HubConnection("http://localhost/test", false); 
     var myHub = connection.CreateProxy("ConnectionHubDemo.ServiceHub"); 
     //How would I send a message to my persisten connection? 
     //myHub... 
     //If succcessful bla bla bla 
     return data; 
    } 
} 

}

回答

1

那是因为你不使用集线器。你在混合Hubs和PersistentConnections。在服务器上集线器自动路由,因此无需映射任何东西(请参见https://github.com/SignalR/SignalR/wiki/Hubs)。来自wiki:

与低级别的PersistentConnections不同,不需要为集线器指定路由,因为它们可以通过特殊的url(/ signalr)自动访问。这个URL是可配置的:

为了使客户端工作,你只需声明一个具有根URL的HubConnection(见https://github.com/SignalR/SignalR/wiki/SignalR-Client-Hubs)。同样来自文档:

要使用SignalR连接到集线器,请使用相应的URL创建HubConnection。 注意:此URL不会指向特定的连接。但是会改为指向您网站的根。 例

var connection = new HubConnection("http://mysite/"); 

所以你的情况,这将是:

var connection = new HubConnection("http://localhost/test"); 

希望这有助于。

UPDATE

集线器请勿谈话持续连接。你所要做的就是按照文档。我上面的答案显示了如何在服务器和客户端上使用集线器。

如果要使用持久连接,请查看文档https://github.com/SignalR/SignalR/wiki/PersistentConnection(服务器)和https://github.com/SignalR/SignalR/wiki/SignalR-Client(客户端)。

+0

我已经更新了我的问题,谢谢 – Vinny

+0

对不起,我可以使用SignalR Client与我的持续连接进行通话。谢谢 – Vinny