যে কেউ এসপ নেট কোরতে এটি করার চেষ্টা করছে For আপনি দাবি ব্যবহার করতে পারেন।
public class CustomEmailProvider : IUserIdProvider
{
public virtual string GetUserId(HubConnectionContext connection)
{
return connection.User?.FindFirst(ClaimTypes.Email)?.Value;
}
}
যে কোনও শনাক্তকারী ব্যবহার করা যেতে পারে তবে এটি অবশ্যই অনন্য। উদাহরণস্বরূপ আপনি যদি কোনও নাম সনাক্তকারী ব্যবহার করেন তবে এর অর্থ হ'ল যদি প্রাপকের একই নামের একাধিক ব্যবহারকারী থাকে তবে বার্তাটি তাদের কাছেও পৌঁছে দেওয়া হবে। আমি ইমেলটি বেছে নিয়েছি কারণ এটি প্রতিটি ব্যবহারকারীর কাছেই অনন্য।
তারপরে সার্ভিসটি স্টার্টআপ ক্লাসে নিবন্ধ করুন।
services.AddSingleton<IUserIdProvider, CustomEmailProvider>();
পরবর্তী. ব্যবহারকারীদের নিবন্ধনের সময় দাবিগুলি যুক্ত করুন।
var result = await _userManager.CreateAsync(user, Model.Password);
if (result.Succeeded)
{
await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Email, Model.Email));
}
নির্দিষ্ট ব্যবহারকারীর কাছে বার্তা প্রেরণ করা।
public class ChatHub : Hub
{
public async Task SendMessage(string receiver, string message)
{
await Clients.User(receiver).SendAsync("ReceiveMessage", message);
}
}
দ্রষ্টব্য: বার্তা প্রেরককে অবহিত করা হবে না যে বার্তাটি প্রেরণ করা হয়েছে। আপনি যদি প্রেরকের শেষে কোনও বিজ্ঞপ্তি চান। এই SendMessage
পদ্ধতিতে পরিবর্তন করুন ।
public async Task SendMessage(string sender, string receiver, string message)
{
await Clients.Users(sender, receiver).SendAsync("ReceiveMessage", message);
}
আপনার যদি ডিফল্ট শনাক্তকারী পরিবর্তন করতে হয় তবে এই পদক্ষেপগুলি কেবলমাত্র প্রয়োজনীয়। অন্যথায়, আপনি সর্বশেষ পদক্ষেপে যান যেখানে আপনি ব্যবহারকারী আইডিস বা সংযোগআইডির মাধ্যমে বার্তা প্রেরণ করতে পারবেন SendMessage
। আরো বেশী