Javascript 可以使用信号器向特定用户发送消息?
我是新来的信号员,最近我正在检查和学习下面的代码是如何工作的 链接: 我想知道使用前面链接中的代码向特定用户发送消息的最简单方法是什么。有没有人有过这样的经历或尝试过这样做?我只是需要一些想法,因为我不知道Signal提供的所有功能和方法 在我的web应用程序中,用户有一个唯一的用户名,我需要将该数据用于连接。我已经看到有一种方法可以创建组并以这种方式发送消息,但我并不完全理解,一个非常简单的示例将对我有很大帮助 你能帮我或给我一些建议吗?多谢各位Javascript 可以使用信号器向特定用户发送消息?,javascript,c#,asp.net,asp.net-core,signalr,Javascript,C#,Asp.net,Asp.net Core,Signalr,我是新来的信号员,最近我正在检查和学习下面的代码是如何工作的 链接: 我想知道使用前面链接中的代码向特定用户发送消息的最简单方法是什么。有没有人有过这样的经历或尝试过这样做?我只是需要一些想法,因为我不知道Signal提供的所有功能和方法 在我的web应用程序中,用户有一个唯一的用户名,我需要将该数据用于连接。我已经看到有一种方法可以创建组并以这种方式发送消息,但我并不完全理解,一个非常简单的示例将对我有很大帮助 你能帮我或给我一些建议吗?多谢各位 public class MyHub : Hu
public class MyHub : Hub
{
public void Send(string userId, string message)
{
Clients.User(userId).send(message);
}
}
我已经在写博客了
所以基本上你需要
首先定义这样一个hub方法
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?}");
});
}
首先,我需要使用与服务器建立连接
new signar.HubConnectionBuilder().withUrl(“/connectionHub”).build()
然后,当连接启动时,我将调用getConnectionId以获取服务器中的用户连接id并存储到会话存储中,因为当我们刷新浏览器时,signalR服务器将为您提供新的连接id
下一步,当我单击按钮时,我将调用服务器中的Send方法,并进行侦听
关于“接收消息”
使用connection.on(“ReceiveMessage”)代码>我已经在写博客了
所以基本上你需要
首先定义这样一个hub方法
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?}");
});
}
首先,我需要使用与服务器建立连接
new signar.HubConnectionBuilder().withUrl(“/connectionHub”).build()
然后,当连接启动时,我将调用getConnectionId以获取服务器中的用户连接id并存储到会话存储中,因为当我们刷新浏览器时,signalR服务器将为您提供新的连接id
下一步,当我单击按钮时,我将调用服务器中的Send方法,并进行侦听
关于“接收消息”
使用connection.on(“ReceiveMessage”)代码>您应该解释它的作用您应该解释它的作用非常感谢您的回答,它非常详细。我很忙,但今天我将尝试按照您的指示,并使我的代码工作。非常感谢您的回复,这是非常详细的。我很忙,但今天我将尝试按照您的指示,使我的代码工作。