我似乎遇到了问题:
Clients.Others.SomeJavascriptFunction;
当我使用
时GlobalHost.ConnectionManager.GetHubContext("MyHub");
我似乎只能在集线器内工作。 任何人都可以对此有所了解。
此致
麦克
更新
大卫的评论之后
我发现我可以执行以下操作:
public class MyHub1 : Hub
{
public static HubConnectionContext MyProperty { get; set; }
public void Start()
{
MyProperty = Clients;
}
}
然后在我的js中调用Start
$.connection.hub.start().done(function () {
sig.server.start();
});
然后允许我从我的api控制器调用我的函数
[HttpPost]
public SaveResult SaveChanges(JObject saveBundle) {
var changes = _contextProvider.SaveChanges(saveBundle);
var stuff = MyHub1.MyProperty;
stuff.Others.refreshToDos();
return changes;
}
也许是一个完整的黑客,但似乎有效。
任何人都可以看到有任何问题吗?
答案 0 :(得分:3)
其他只有在您要排除连接ID时才有意义。其他是Clients.AllExcept(Context.ConnectionId)的简写。当您在集线器之外时,没有当前的连接ID,因此您无法使用其他。
您需要将连接ID从客户端传递给API,以便用于执行AllExcept。