首页 > 解决方案 > SignalR 用于 2 个网页

问题描述

我正在使用 .net 项目并创建一个与 SignalR 一起使用的网页。下面的代码适用于一个网页。客户端:

$.connection.hub.start().done(function () { });

var chat = $.connection.chatHub;
chat.client.broadcastMessage = function (name, message) {  };

服务器端:

var context = 
Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<SignalRChat.ChatHub>();          
context.Clients.All.broadcastMessage(name, message);

然后我创建第二个网页并从第 1 页复制客户端和服务器代码。问题是当我调用

context.Clients.All.broadcastMessage(name, message); 

从第二页开始。它触发了函数

chat.client.broadcastMessage 

在第一页。如何将其修复为第 2 页的已解雇客户端?

谢谢

标签: signalr

解决方案


你想让它在两个页面上触发吗 -

我怀疑您没有在第 2 页上创建连接。一旦您在第 2 页上建立了有效连接,如果您同时打开了第 1 页和第 2 页,它将在第 1 页和第 2 页上触发。或仅在您打开的页面上。

如果您希望它在每个页面上触发,但不是在两个页面上触发,您需要进行一些更改。您可以在此处使用多个选项,而无需额外的上下文:

  1. 非常简单 - 将第 2 页上的 chat.client.broadcastMessage 重命名为其他名称,并使用新方法从服务器调用它。
  2. 查看组 - 更新 context.Clients.Group(groupname).broadcastMessage(name, message) 您可以在第 1 页向用户发送消息(假设您有第 1 页和第 2 页的组),然后仅在页面上向用户发送消息2 需要时。

推荐阅读