Following along this question,我在试图"告诉"首先打电话的用户,没有其他人。
作为寻找快速和肮脏解决方案的发现阶段的一部分,我被告知SignalR将是一个很好的选择,以帮助发现和反馈。但是,有人告诉我,这只是用于测试,而不是用于生产。
后来,管理层改变主意。
所以现在我已经开始关注这个项目,并准备好发布。我把它弄得很快又脏,所以我有一个我不知道如何有效修复的缺陷。我告诉它向所有人广播,但我需要它只向一个客户广播。
代码会有很多东西被删除,但它应该给出它的主旨。首先是控制器。
public class HomeController : Controller
{
HubResponder hub = new HubResponder();
public String RunProcess(FormCollection ProcessingInfo)
{
hub.SignalUser("String");
}
}
我在这里看到的是,因为我从控制器而不是客户端构建集线器,所以它不接收客户端信息。我也无法将其转换为集线器,因为它已经继承了Controller。这是集线器:
public class HubResponder : Hub
{
public void SignalUser(String Outbound)
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<HubResponder>();
context.Clients.All.sendStatus(Outbound);
}
}
现在这样可行,但它会发送给所有人,这会让人感到困惑。
答案 0 :(得分:-1)
好的,这就是我想出的答案。通过使用带有连接ID的隐藏输入,当表单提交时我只分配给该特定位置。
<input id="SignalConnectionID" type="hidden" name="SignalConnectionID" value="" />
其他地方:
$.connection.hub.start()
.done(function () {
$('#SignalConnectionID').val($.connection.hub.id);
});
然后在提交表单时,我给实例化的集线器提供连接ID。基本上就是这样。