مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

ارسال دایرکت مسیج به کاربری خاص در asp core 3.1 و signalr

یکشنبه, 10 فروردین 1399 17:23

ارسال دایرکت مسیج به کاربری خاص در asp core 3.1 و signalr

سلام خسته نباشین . 

من در پنل پروژه ام بخشی رو دارم تحت عنوان ارتباط با کاربران . که مدیر و یا کاربان میتونن با هم بصورت انلاین چت کنند . 

حالا مشکلی که دارم اینه نمیتونم یه پیام رو به کاربر خاص که مثلا ثبت نام کرده بفرستم . در پروژه از identity برای احراز هویت استفاده  کردم .

به این صورت که در صفحه ای لیستی از کاربرایی که ثبت نام کرده اند رو نمایش میده . کاربر به هر کدوم از ائنها که بخواد دایرکت بده روش کلیلک میکنه و در صفحه کنار لیست تایخچه پیام هاش و همچنین پیام جدیدش رو میتونه اضافه کنه .

 کلاس هاب

 public class ChatHub : Hub
    {

        #region Fields
        private readonly IHttpContextAccessor _context;
        private UserManager<AppUser> _userManager;
        #endregion

        #region Ctor
        public ChatHub(IHttpContextAccessor context,
            UserManager<AppUser> userManager)
        {
            _context = context;
            _userManager = userManager;
        }
        #endregion

        #region Methods
        public async Task SendMessage(string userToSend, string message)
        {
            var from = _context.HttpContext.User?.Identity?.Name;
            await Clients.All.SendAsync("ReceiveMessage", from, message);

        }

        #endregion

    }

دستورات اسکریپتم

"use strict";
var connection = new signalR.HubConnectionBuilder().withUrl("/ChatHub").build();
$('#submit-button').attr('disabled', true);



connection.on("ReceiveMessage", function (user, message) {
    var msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt").replace(/>/g, "&gt;");
    var encodeMsg = user + " : " + msg;
    $("#messageList").prepend("<li>" + encodeMsg + "</li>");
});

connection.start().then(function () {
    $('#submit-button').attr('disabled', false);
}).catch(function (err) {
    return alert(err.toString());
});


function Sender() {
   // debugger;
    var message = $('#chat-message').val();
    var userToSend = $('#chat-with').html();
    if ( message != "") {
        connection.invoke("SendMessage", userToSend, message).catch(
            function (err) {
            return alert(err.toString());
            });
            $.ajax({
                url: '/saveMessage',
                data: { Text: message },
                type: 'POST',
                async: true,
                success: function (data) {
                    if (data != null) {
                        
                    }
                }
            });
        
        event.preventDefault();
    }
}

الان اینکه پیام ارسال میشه اوکیه اما اینکه به کاربری خاص بخوام بفرستم نه .

ممنون میشم راهنمایی کنین 

ارسال پاسخ برای این تاپیک