Я пытаюсь создать возможность связи в режиме реального времени для приложения Phonegap/Cordova. Я использую SignalR 2 для обработки сообщения.Специальный пользователь в приложении Phonegap/Cordova с помощью SignalR 2
Вещь, с которой я борюсь, получает сообщение конкретному пользователю. Каждый отдельный пример показывает сохранение Context.User.Identity.Name, которое бесполезно для меня, потому что контекст User.Identity удаленного сайта не используется моим телефоном.
В сущности, я не аутентифицирую пользователя в традиционном смысле, поэтому мне нужен другой способ связывания идентификатора соединения SignalR с именем пользователя, которое я передаю.
Взято из официального сигнала ASP.NET 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 в любом случае. –