SignalR客户端连接问题?无法使用HubConnection()连接到路径

时间:2012-06-17 16:36:01

标签: c# asp.net signalr

我一直试图在wiki中查看这样做,我正在关注它,但我似乎错过了一些东西?

所以我在这里:

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

这就是我所拥有的:

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

Global.asax中

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

我收到一条错误,没有宣布取消令牌.... 是不是我没有打到我的HubConnection页面?

如果您需要我澄清,请告诉我。 谢谢,

更新:

感谢您的回复!我还不确定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 个答案:

答案 0 :(得分:1)

那是因为你没有使用Hubs。你正在混合Hubs和PersistentConnections。在服务器上,集线器会自动路由,因此无需映射任何内容(请参阅https://github.com/SignalR/SignalR/wiki/Hubs)。来自维基:

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

要使客户端工作,只需使用根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");

希望这有帮助。

<强>更新

集线器不要与持久连接通信。您所要做的就是遵循文档。我上面的答案显示了如何在服务器和客户端上使用集线器。

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