我意识到这些问题是相似的:
SignalR – Broadcast to all clients except Caller
Send a message to all clients in a Group,except for the current client
然而,他们是老的,现在的文件中没有任何东西给我任何关于我是否做正确的事情的线索.
这是问题/问题:
我需要能够从服务器端向所有连接的客户端发送消息,除了提交http请求的人之外 – 想象有人提交表单,并让所有连接到同一表单的人被通知已经提交的内容.
我现在这样做的方式是这样的:
var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>(); var connectionID = HttpContext.Request.Cookies["conn-id"].Value; context.Clients.AllExcept(connectionID).addMessage(message);
并且每次建立连接时,我将ConnectionID设置在客户端的一个cookie中:
$.connection.hub.start().done(function(){ $.cookie("conn-id",$.connection.hub.id); });
所以我的问题是:
在这种情况下,这是最好的/唯一的方法吗?我可以从hub.Context.ConnectionID等其他地方读取发起请求的客户端的连接ID,或者类似于从HttpContext.Current.Session.SessionID获取SessionID的方式吗?
>可以通过将客户端连接设置为SessionID,以编程方式设置连接ID吗?这可能是由于某些原因造成的吗?如果是这样,你可以解释如何以编程方式设置连接ID,为了做到这一点,我需要连接哪个事件?
我注意到,每次重新加载页面时,连接ID都将更改为其他的GUID.至少在Session的整个生命周期中如何设置ConnectionId只能一次?