C#信号器覆盖上下文.ConnectionId
是否可以用信号器2.4.1覆盖C#信号器覆盖上下文.ConnectionId,c#,jquery,signalr,C#,Jquery,Signalr,是否可以用信号器2.4.1覆盖上下文.ConnectionId?很遗憾,IConnectionFactory不再可用 我已尝试使用下面的代码$.connection.id=userId刚刚被忽略,var userId=Context.QueryString[“userId”]确实被拉到聊天中心,但作为Context.ConnectionId在Connect方法中是只读的,我无法覆盖它 我希望保留Clients.AllExcept(connectionId).onNewUserConnected(
上下文.ConnectionId
?很遗憾,IConnectionFactory
不再可用
我已尝试使用下面的代码<代码>$.connection.id=userId刚刚被忽略,var userId=Context.QueryString[“userId”]
确实被拉到聊天中心,但作为Context.ConnectionId在Connect
方法中是只读的,我无法覆盖它
我希望保留Clients.AllExcept(connectionId).onNewUserConnected(connectionId,userName)
功能,仅当在所有情况下覆盖Context.ConnectionId
时,此选项才有效,因为仅覆盖ConnectionId
是不够的,因为信号器将具有原始Guid,因此与我传递的值不匹配
任何帮助都将不胜感激
public void Connect(字符串用户名){
var connectionId=Context.connectionId;
if(ConnectedUsers.Count(x=>x.ConnectionId==ConnectionId)!=0){
返回;
}
ConnectedUsers.Add(新建Chat.UserDetail){
ConnectionId=ConnectionId,
用户名=用户名
});
Clients.Caller.onConnected(connectionId、用户名、ConnectedUsers、CurrentMessage);
Clients.AllExcept(connectionId).onNewUserConnected(connectionId,用户名);
}
已连接的公用覆盖任务(){
var userId=Context.QueryString[“userId”];
返回base.OnConnected();
}
$(函数(){
var userId=$(“#User”).attr(“数据id”);
var chatHub=$.connection.chatHub;
$.connection.hub.qs={'UserId':UserId};
$.connection.id=用户id;
注册客户端方法(chatHub);
$.connection.hub.start().done(函数()){
注册事件(聊天中心);
});
});
现在无法设置连接ID。为什么要使用组呢?因为我想根据组的本质使用组,而不是向单个组添加单个用户。而且我不相信你可以将Clients.AllExcept(connectionId).onNewUserConnected(connectionId,userName)
与组一起使用。但是微软在文档中建议使用单用户组,正如你在这里看到的:问题是,为了记录数据库聊天历史,你必须维护一个连接列表,这似乎毫无意义,如果您有30个用户,所有用户都有一个唯一的id,那么每个用户都只有一个连接id,并且有一个链接到该id的聊天历史记录。还可以处理用户,打开多个选项卡或浏览器,这将强制为同一用户设置新的Guid。您现在无法设置connectionId。为什么要使用组呢?因为我想根据组的本质使用组,而不是向单个组添加单个用户。而且我不相信你可以将Clients.AllExcept(connectionId).onNewUserConnected(connectionId,userName)
与组一起使用。但是微软在文档中建议使用单用户组,正如你在这里看到的:问题是,为了记录数据库聊天历史,你必须维护一个连接列表,这似乎毫无意义,如果您有30个用户,所有用户都有一个唯一的id,那么每个用户都只有一个连接id,并且有一个链接到该id的聊天历史记录。还可以处理用户,打开多个选项卡或浏览器,这将强制为同一用户创建新的Guid。