- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
出于各种原因,在建立 SignalR 连接时,我将该 ConnectionId 存储在我的数据存储中。但是,这些连接记录可能会变得孤立,例如,如果 SignalR 重新启动。 (我还观察到让我怀疑 OnDisconnected() 是否被正确调用的行为,尽管我不太确定这一点。)
但是无论出于何种原因,我都会定期在我的数据库中得到孤立的记录,我希望能够修剪这些记录,并删除列出的任何实际上不再连接的 ConnectionID - 大概是通过让 SignalR 告诉我此 ConnectionID 仍与实时 session 相关联。
我查看了 SignalR 源代码,并没有向我指出如何最好地完成此操作。有没有合理的方法来做到这一点?
最佳答案
实现这一目标的方法是自行跟踪客户。从您的帖子看来,您似乎已经这样做了(如果您没有这样做,仍会提供代码),但这是了解客户端是否已连接的唯一方法。 SignalR 服务器触发 onconnected/ondisconnected 事件,以指示客户端是否已连接。
我建议确保在重新连接时不要重新实例化数据库中的记录。
例如( super 简单的例子):
class myHub
{
private static List<String> _connectedClients = new List<String>();
public override Task OnConnected()
{
_connectedClients.Add(Context.ConnectionId);
return base.OnConnected();
}
public override Task OnDisconnected()
{
_connectedClients.Remove(Context.ConnectionId);
return base.OnDisconnected();
}
public static bool IsConnected(string cid)
{
return _connectedClients.Contains(cid);
}
}
关于signalr - 给定 SignalR ConnectionId,我能否判断该 session 是否仍处于连接状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14131789/
如果我有多个集线器,并将一个 JavaScript 客户端连接到所有集线器,它们之间的上下文 ConnectionID 是否相同? 最佳答案 有趣的问题。我不知道答案,所以我用 this exampl
我有一个 asp.net 经典网站。我已经获得了 SignalR 的基本功能(其中一个客户端向其余客户端发送消息)。但现在我只想将消息发送到特定的 connectionsID。 我的中心: **
我正在开发一款使用 signalr 的聊天应用。我通过他们的 connectionid 关联每个用户。 我只是想知道如果我广播所有用户的 connectionids 以便任何人都可以在代码中看到它们,
我的应用程序是一个使用 SignalR 的 WebApi 项目,类似于这个 http://blog.johnbrunnings.com/tag/signalr/ .我需要在 Controller 中获
我正在玩弄 SignalR 并在徘徊 SignalR 如何创建 connectionID 这是基于我的 IP 地址、我连接的设备还是其他?并且是否可以手动设置此 ID。假设我有一个包含用户的数据库,我
我有一个 SignalR 项目,该项目在我的开发环境中正常运行,但是一旦将其转移到生产环境中,几乎每个调用都会因错误而失败 The ConnectionId is in the incorrect f
我想知道信号器是否更改 OnReconnected 方法上的 ConnectionId?因为我将用户列表映射到他们的连接 ID,所以如果由于连接速度慢而在服务器上引发重新连接事件,例如,connect
我正在使用 yi 1.1 应用程序开发指南,并且正在尝试实现 RBAC(基于角色的访问控制)。我得到的错误是 CDbAuthManager 未定义,这很奇怪,因为我测试了数据库连接并且它有效,并且我在
出于各种原因,在建立 SignalR 连接时,我将该 ConnectionId 存储在我的数据存储中。但是,这些连接记录可能会变得孤立,例如,如果 SignalR 重新启动。 (我还观察到让我怀疑 O
如何在集线器之外获取客户端 connectionId/clientId?.. 我已设法执行以下操作: var context = GlobalHost.ConnectionManager.GetHub
我开发 WPF Prism 6 MVVM 多模块应用程序。直到今天一切正常。但是今天早上我决定清理并重建我的应用程序。在清理和重建后,我的应用程序运行时出现以下错误: PresentationFram
我有以下星座: 我正在使用一个 asp.net 核心 web api 项目,其中还包括一个 HubContext。用户必须做的第一件事是对我的 UsersController : BaseContro
我希望能够使用 SignalR 向特定用户帐户发送消息。 现在我可以发送给大家了! 我正在寻找任何方式来访问集线器外部 Controller 中的 context.ConnectionID。我尝试在
我正在 $connect 路由上设置一个带有自定义授权方的 AWS API Gateway Websockets,如下所述: https://docs.aws.amazon.com/apigatewa
我正在尝试将我的 iOS 应用程序与我们在本地网络上的开发服务器上设置的 MVC3(框架 4)SignalR 程序集成。为此创建的网站在我们的网络中运行良好。 但是,当尝试使用 SignalR iOS
当我向信号器发出请求时,我从 JavaScript 发送用户 ID,如下所示: var userId = "1"; var connection = $.hubConnection("/si
当我这样做时: Connection = new HubConnection(uri); Connection.ConnectionId = "89668c32-c654-40a2-96c3-21a8
I am using SingalR for my Chat Application. Wanted to play with Redis and SignalR but I cannot find
我正在开发一个使用无服务器框架构建后端的项目。最近,我使用 API Gateway 的 websockets 添加了一个功能。但是,我对我的特定实现的安全性存有疑问,并想询问它们的有效性。 我努力将身
嗨,我正在使用 Angular 应用程序连接到信号器,我正在使用“@aspnet/signalr”:“1.0.0-preview1-final”。 我需要将 connectionId 发送到我的 Co
我是一名优秀的程序员,十分优秀!