1

我一直在尝试在 wiki 中查找有关执行此操作的信息,我正在关注它,但我似乎遗漏了什么?

所以这就是我所在的位置:

我有一个在本地运行良好的客户端 JS。我现在想通过 API 发送一些东西来更新客户端版本。我应该使用 SignalR Client 对吗?

这就是我所拥有的:

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

全球.asax

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

我收到一个错误,即没有声明取消令牌......是不是我没有点击我的 HubConnection 页面?

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

更新:

感谢回复!我仍然不确定集线器如何与持久连接对话?

这是我目前所拥有的......

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;
    }
}

}

4

1 回答 1

1

那是因为您没有使用集线器。您正在混合集线器和持久连接。在服务器上,集线器会自动路由,因此无需映射任何内容(请参阅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(客户端)。

于 2012-06-17T17:15:12.813 回答