如何使用signalr将多个客户端连接到同一个websocket?

时间:2017-03-23 21:52:41

标签: asp.net-mvc azure websocket signalr azure-web-sites

我有一个web MVC 5应用程序,我在本地进行了测试并且工作正常。

是否可以跟踪本地变量上的已连接用户?我应该将它存储在数据库中吗?

我有主持人视图和播放器视图,每次玩家上线时,计数器应该添加一个,它可以在localhost上运行但在部署到azure时不起作用(我启用了web套接字)。

有没有办法检查打开的连接并让每个客户端连接到那个?

感谢!!!!!

1 个答案:

答案 0 :(得分:1)

我们可以覆盖 OnConnected OnReconnected OnDisconnected 方法来跟踪/统计SignalR应用程序中的在线用户,以及部署SignalR应用程序对于具有多个实例的Azure网站,我建议您use either a database or Azure table storage for storing connection information

Hub类中的代码段

public override Task OnConnected()
{
    //update the number of online user from database or Azure table storage

    //call function usercounter to update clients to show online user number
    Clients.All.usercounter(userCount);

    return base.OnConnected();
}


public override Task OnReconnected()
{
    //update the number of online user from database or Azure table storage

    Clients.All.usercounter(userCount);

    return base.OnReconnected();
}

public override Task OnDisconnected(bool stopCalled)
{
    //update the number of online user from database or Azure table storage

    Clients.All.usercounter(userCount);

    return base.OnReconnected();
}

此外,SignalR Tracing feature使我们能够查看有关SignalR应用程序中事件的诊断信息,这可以帮助我们解决SignalR问题。