页面刷新时的信号



我正在使用SignalR来分享用户的实时位置,我遇到了一个大问题,我找不到一个好主意来摆脱这个问题。问题是,每次用户开始共享位置时,我都会将他们添加到数据库表中,我在其中保存共享其位置的人,但是如果该用户刷新页面,我不知道这一点,并且他们仍然是共享数据库中位置的用户。如果它们只是离开页面或按下停止按钮,它们将从数据库中删除。

如果可能的话,你知道如何解决这个问题吗?

但是如果这个用户刷新页面,我不知道这个

您可以使用Hub。OnConnectedAsync方法获取刷新的Connectionid,并根据当前用户将刷新的Connectionid更新到数据库,代码如下:

public override async Task OnConnectedAsync()
{
//get the connection id
var connectionid = Context.ConnectionId;
//get the username or userid
var username = Context.User.Identity.Name;
var userId = Guid.Parse(Context.User.FindFirstValue(ClaimTypes.NameIdentifier));
//update the current user's connectionid to database
var CId = _context.UserIdToCId.Find(userId);
CId.ConnectionId = connectionid;
_context.Update(CId);
await _context.SaveChangesAsync();
await base.OnConnectedAsync();
}

注意在分享用户的实时位置之前,记得去数据库检查这个人的最新ConnectionId。

最新更新