我正在尝试为Phonegap/Cordova应用程序创建实时通信功能。我使用SignalR 2来处理通信。使用SignalR 2在Phonegap/Cordova应用程序中发送消息特定用户
我一直在努力的事情是向特定用户发送消息。每个例子都显示保存Context.User.Identity.Name,这对我来说没用,因为远程站点的User.Identity上下文不是我的phonegap应用共享的。
从本质上讲,我不认证传统意义上的用户,所以我需要另一种方法将SignalR connectionID与用户名相关联。
取自官方的ASP.NET信号器例子,我有下面的代码覆盖了OnConnected事件。遗憾的是它不带任何参数,并预计User.Identity是不是空:
public override Task OnConnected()
{
using (var db = new UserContext())
{
// Retrieve user.
var user = db.Users
.Include(u => u.Rooms)
.SingleOrDefault(u => u.UserName == Context.User.Identity.Name);
// If user does not exist in database, must add.
if (user == null)
{
user = new User()
{
UserName = Context.User.Identity.Name
};
db.Users.Add(user);
db.SaveChanges();
}
else
{
// Add to each assigned group.
foreach (var item in user.Rooms)
{
Groups.Add(Context.ConnectionId, item.RoomName);
}
}
}
return base.OnConnected();
}
现在,也许我需要的是有一个版本的方法,它采用一个字符串作为参数,然后我会用它作为我的用户标识符。
但如何去做呢?
好感谢upvotes反正。 –