When Im sending message to specific user in SignalR chat im getting back message that i wrote

Viewed 24

Screenshot how this problem looks in chat - https://imgur.com/a/2y7cImC I immediately received the same text that i sent to user(sending time is randomized, dont look at it) User that must receive the message get it without problem, but every time when method is invoked, all users get message text that was written in the input

Here`s the code of method that creating message

[HttpPost("create"), DisableRequestSizeLimit]
        public async Task<ActionResult> CreateMessage(CreateMessageDto createMessageDto)
        {
            
            try 
            {
                var authJWT = Request.Cookies["accessToken"];
                var validatedJWT = _jwtService.ValidateJWT(authJWT);


                Message messageToCreate;
                if (createMessageDto.Type == "image" || createMessageDto.Type == "video" || createMessageDto.Type == "document")
                {
                    var uploadFile = await UploadFile(createMessageDto.File);

                    if (uploadFile.Code == "error")
                    {
                        return Ok(new { code = "error", message = uploadFile.Message });
                    }
                    
                    messageToCreate = new()
                    {
                        MessageId = Guid.NewGuid(),
                        Uid = createMessageDto.Uid,
                        Username = createMessageDto.Username,
                        Avatar = createMessageDto.Avatar,
                        Content = uploadFile.FileName,
                        Type = createMessageDto.Type,
                        CreatedAt = DateTime.Now,
                        InboxRefId = createMessageDto.InboxRefId
                    };
                }
                else
                {
                    messageToCreate = new()
                    {
                        MessageId = Guid.NewGuid(),
                        Uid = createMessageDto.Uid,
                        Username = createMessageDto.Username,
                        Avatar = createMessageDto.Avatar,
                        Content = createMessageDto.Content,
                        Type = createMessageDto.Type,
                        CreatedAt = DateTime.Now,
                        InboxRefId = createMessageDto.InboxRefId
                    };
                }

                await _messageRepository.CreateMessage(messageToCreate);

                await _chatHub.Clients.All.ReceiveMessage(messageToCreate);



                return Ok(new { code = "success", message = messageToCreate });       
            } catch (Exception ex) {
                return Unauthorized(new { code = "error", message = "Unauthorized" });
            }
        }

and from front-end part:

const connection = new HubConnectionBuilder()
      .withUrl(`https://chatapitest.azurewebsites.net/hubs/chat`)
      .withAutomaticReconnect()
      .build();

    connection
      .start()
      .then(() => {
        console.log("connect");
        // Receive message event listener
        connection.on("ReceiveMessage", (message) => {
          console.log("Receive!");
          // console.log(message);
          messageObj = {
            id: chatMessages.length + 1,
            message: message.content,
            time: "00:" + n,
            userType: "receiver",
            // image: avatar4,
            isFileMessage: false,
            isImageMessage: false,
          };
          // console.log(messageObj);
          setchatMessages((prev) => [...prev, messageObj]);
    ```
    
  
0 Answers
Related