如何使用存储在 Mssql 数据库中的用户 ID 将消息发送给特定用户?

时间:2021-01-05 15:21:08

标签: asp.net-core asp.net-core-mvc signalr asp.net-core-signalr

我想用Mssql数据库实现私人聊天系统。我想一对一的聊天系统。一位用户输入存储在数据库中的接收者 ID 和消息文本,然后将消息发送到 Receiver 。然后该消息出现在具有该接收者 ID 的接收者消息区域中。在我的代码中是这样工作的; Signalr 生成连接 ID,但此 ID 每次刷新都会更改,我想保持不变。我该怎么做?

这是我的js代码

"use strict";


$(document).ready(() => {
    var connection = new signalR.HubConnectionBuilder().withUrl("/chathub").build();
    connection.on("connected", connecitonid => $("#connectionId").html(connecitonid));

    connection.start();

    $("button").click(() => {
        let message = $("#txtMessage").val();
        var user = $("#sender").val();
        connection.invoke("ClientSendMessage", $("#client").val(),user, message)
            .catch(error => console.log("Error." + error));
        var div = document.createElement("div");
        div.textContent = "me" + ":" + message;
        document.getElementById("son").appendChild(div);
    });

    connection.on("ReceiveMessage", function (user, message) {
        var msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
        var encodedMsg = user + ":" + msg;
        var div = document.createElement("div");
        div.textContent = encodedMsg;
        document.getElementById("son").appendChild(div);
        
    });

});

这是我的枢纽班

using MentorShip.Models;
using Microsoft.AspNetCore.SignalR;
using System;
using System.Collections.Generic;
using System.Linq;

using System.Threading.Tasks;

namespace MentorShip.Hubs
{
    public class SignalRChat:Hub
    {
        

        public async Task ClientSendMessage(string connectionId,string user, string message)
        {
            await Clients.Client(connectionId).SendAsync("ReceiveMessage",user, message);
        }
        public async override Task OnConnectedAsync()
        {
            await Clients.Caller.SendAsync("connected", Context.ConnectionId);
          
        }

    }
}

这是我的html代码

 <div class="container">
            <div class="row"><h5>Connection ID : <span id="connectionId"></span></h5></div>
            <div class="row">
                <div class="col-md-7"><input type="text" id="sender" value="Sender Name"></div>
            </div>
            <div class="row">
                <div class="col-md-7"><input type="text" placeholder="ReceiverId" id="client"></div>
            </div>
            <div class="row">
                <div class="col-md-7"> <input type="text" id="txtMessage"> <button>Send</button></div>
            </div>
            <div class="row">
                <div class="col-md-7" id="son"> </div>
            </div>


        </div>
        

这就是代码的工作方式 This connection id changes every refresh or another browser not constant

0 个答案:

没有答案
相关问题