在服务器端我有
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
答案 0 :(得分:0)
不确定这里究竟是什么问题,但你可以在OnReceived中只听取消息/ ping
asp.net/signalr
答案 1 :(得分:0)
可能你可以从js客户端发送自定义我是活着的消息。因为有时ping并不像预期的那样来自客户端。通常当网络繁忙时会发生这种情况......
祝你好运