我一直试图在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;
}
}
}
答案 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(客户端)。