Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#信号器覆盖上下文.ConnectionId_C#_Jquery_Signalr - Fatal编程技术网

C#信号器覆盖上下文.ConnectionId

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(

是否可以用信号器2.4.1覆盖
上下文.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。