【发布时间】:2021-01-08 17:27:10
【问题描述】:
我在 asp.net core mvc signalr 项目中工作。我想向特定用户发送消息。我阅读了很多关于此的文章,并在 * 中查看了有关此问题的一些解决方案,但我仍然无法做到这一点。我想向用户发送消息,使用存储在数据库中的用户电子邮件,而不是唯一的连接 ID。我该如何填写这些方法?我填不上。 这是我的中心类
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);
}
}
这是我的 CustomProvider 类
public class CustomProvider : IUserIdProvider
{
public string GetUserId(HubConnectionContext connection)
{
throw new NotImplementedException();
}
}
这是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, "&").replace(/</g, "<").replace(/>/g, ">");
var encodedMsg = user + ":" + msg;
var div = document.createElement("div");
div.textContent = encodedMsg;
document.getElementById("son").appendChild(div);
});
});
这是html代码
<div id="chat" style="display:none;margin-left:30%;">
<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>
</div>
这就是代码的显示方式 I dont want this id I wanna use email adress
【问题讨论】:
标签: asp.net-core asp.net-core-mvc signalr chat asp.net-core-signalr