SignalR PersistentConnection通过js客户端进行Ping或Ping自定义Ping

时间:2014-10-10 16:59:44

标签: asp.net signalr

在服务器端我有

    public class Global : System.Web.HttpApplication
    {
        private static List<UserInfo> _Users;
        public static List<UserInfo> Users
        {
            get { return Global._Users; }
            set
            {
                lock (_Users)
                {
                    Global._Users = value;
                }
            }
        }
    ...

       public class RawHub : PersistentConnection
        {

            protected override Task OnConnected(IRequest request, string connectionId)
            {
                var UserID = request.QueryString.Where(t => t.Key == "U");
                if (!string.IsNullOrEmpty(UserID.First().Value))
                {
                    var ui = new Guid(UserID.First().Value);
                    var user = Global.Users.FirstOrDefault(x => x.USERID == ui);
                    if (user == null)
                    {
                        var us = new UserInfo();
                        us.USERID = ui;
                        us.ConnectionId = connectionId;
                        Global.Users.Add(us);
                    }
                    else
                    {
                        user.ConnectionId=connectionId;
                    }
                    return Connection.Send(user.ConnectionId,"Good To Go");
                }            
            }

我想尝试向用户发送用户的特定信息用户发送... 我必须在断开连接时清理Global.Users。

问:这有可能赶上ping吗?来自js客户端还是我必须ping到客户端以检测是否存在?

最佳方法是什么

thnks

2 个答案:

答案 0 :(得分:0)

不确定这里究竟是什么问题,但你可以在OnReceived中只听取消息/ ping

asp.net/signalr

答案 1 :(得分:0)

可能你可以从js客户端发送自定义我是活着的消息。因为有时ping并不像预期的那样来自客户端。通常当网络繁忙时会发生这种情况......

祝你好运