gpt4 book ai didi

c# - 在断开连接时检测用户信号器

转载 作者:行者123 更新时间:2023-11-30 12:08:57 26 4
gpt4 key购买 nike

我需要使用 signalr 检测用户何时连接和断开连接。

我有这两种集线器方法:

public void Say(string message)
{
Trace.WriteLine(message + " - " + Context.ConnectionId);
}

public void Goodbye(string message)
{
Trace.WriteLine(message + " - " + Context.ConnectionId);
}

我已经实现了 Say 方法,它负责检测连接,如下所示:

$.connection.hub
.start()
.done(function () {
hub.server.say("Hello SignalR");
});

但是我如何检测断开连接?

最佳答案

将此覆盖方法添加到您的 Hub 类中:

public override Task OnDisconnected(bool stopCalled)
{
// do the logging here
Trace.WriteLine(Context.ConnectionId + ' - disconnected');
return base.OnDisconnected(stopCalled);
}

这将在服务器端处理和记录断开连接,但我认为在 client 端跟踪它没有多大意义,因为您的 SignalR session 不太可能从服务器端终止 - see here

关于 @stuartd 评论的编辑:你也可以覆盖

public override Task OnReconnected()
{
Trace.WriteLine(Context.ConnectionId + ' - reconnected');
return base.OnReconnected();
}

因此当客户端尝试重新连接到服务器并成功时,您将能够跟踪案例。

编辑#2:那么您当然可以使用相同的机制来跟踪 OnConnected 事件

public override Task OnConnected()
{
Trace.WriteLine(Context.ConnectionId + ' - reconnected');
return base.OnConnected();
}

因此,所有跟踪代码都方便地保存在服务器端,这在客户端登录到集线器但由于某种原因未能执行您用于跟踪记录状态的方法时更加稳健。

关于c# - 在断开连接时检测用户信号器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41853979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com