gpt4 book ai didi

javascript - 可以使用 SignalR 向特定用户发送消息吗?

转载 作者:行者123 更新时间:2023-11-28 03:27:55 24 4
gpt4 key购买 nike

我是 SignalR 的新手,最近我正在检查和学习以下代码的工作原理。

链接:https://learn.microsoft.com/en-us/aspnet/signalr/overview/getting-started/tutorial-getting-started-with-signalr

我想知道使用上一个链接中的代码向特定用户发送消息的最简单方法是什么。有人有过同样的经历或尝试过吗?我只需要想法,因为我不知道 SignalR 提供的所有功能和方法。

在我的网络应用程序中,用户有一个唯一的用户名,我需要使用该数据进行连接。我已经看到有一种方法可以创建组并以这种方式发送消息,但我不完全理解,一个非常简单的例子会对我有很大帮助。

你能帮助我或给我一些建议吗?谢谢

最佳答案

我已经写博客了 here

所以基本上你需要

首先定义一个像这样的集线器方法

public async Task Send(string userId)
{
var message = $"Send message to you with user id {userId}";
await Clients.Client(userId).SendAsync("ReceiveMessage", message);
}

添加到startup.cs

public void ConfigureServices(IServiceCollection services)
{
services.Configure(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddSignalR();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}

app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSignalR(routes =>
{
routes.MapHub<ConnectionHub>("/connectionHub");
});
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}

最后

(function () {
var connection = new signalR.HubConnectionBuilder().withUrl("/connectionHub").build();

connection.start().then(function () {
console.log("connected");

connection.invoke('getConnectionId')
.then(function (connectionId) {
sessionStorage.setItem('conectionId', connectionId);
// Send the connectionId to controller
}).catch(err => console.error(err.toString()));;


});

$("#sendmessage").click(function () {
var connectionId = sessionStorage.getItem('conectionId');
connection.invoke("Send", connectionId);
});

connection.on("ReceiveMessage", function (message) {
console.log(message);
});

})();

首先,我需要使用

与服务器建立连接

new signalR.HubConnectionBuilder().withUrl(“/connectionHub”).build()

然后,当连接开始时,我将调用 getConnectionId 来获取服务器中的用户连接 ID 并将其存储到 session 存储中,因为当我们刷新浏览器时,signalR 服务器将为您提供新的连接 ID

接下来,当我单击按钮时,我将调用服务器中的 Send 方法并监听 关于“接收消息”

使用connection.on(“ReceiveMessage”);

关于javascript - 可以使用 SignalR 向特定用户发送消息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58459144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com