Signalr 未调用信号器组
我正在用信号器做我的第一次测试。我在玩弄聊天信息,但这只是替换我今天在我的网站上从客户端到服务器的所有轮询的第一步 我有很多场景,我想通过他们的登录名或ID通知某些用户。我的想法是,一旦每个用户连接,我就将其添加到两个组中。我在OnConnected中执行此操作,该事件称为 当我发送聊天信息时,我有两种模式:公共模式或个人模式。如果是针对个人的,则通知发件人,并通知收件人。发件人收到消息,但组从未收到。要知道一个团体有多少成员似乎是不可能的 知道这里出了什么问题吗Signalr 未调用信号器组,signalr,Signalr,我正在用信号器做我的第一次测试。我在玩弄聊天信息,但这只是替换我今天在我的网站上从客户端到服务器的所有轮询的第一步 我有很多场景,我想通过他们的登录名或ID通知某些用户。我的想法是,一旦每个用户连接,我就将其添加到两个组中。我在OnConnected中执行此操作,该事件称为 当我发送聊天信息时,我有两种模式:公共模式或个人模式。如果是针对个人的,则通知发件人,并通知收件人。发件人收到消息,但组从未收到。要知道一个团体有多少成员似乎是不可能的 知道这里出了什么问题吗 public class Gl
public class GlobalHub:Hub
{
private Users user;
private void AuthenticateUser()
{
var ydc = new MyDataContext();
user = ydc.Users.First(u => u.Login == HttpContext.Current.User.Identity.Name);
}
public override Task OnConnected()
{
var ydc = new MyDataContext();
user = ydc.Users.First(u => u.Login == HttpContext.Current.User.Identity.Name);
Groups.Add(Context.ConnectionId, user.Login);
Groups.Add(Context.ConnectionId, user.ID.ToString());
return base.OnConnected();
}
public void SendChatMessage(string message, string recipient)
{
AuthenticateUser();
var cm = ChatController.AddChatMessage(user.Login, user.ID, recipient, tmessage);
if (recipient != "")
{
Clients.Caller.NewMessage(cm);
Clients.Group(recipient).NewMessage(cm);
}
else
{
Clients.All.NewMessage(cm);
}
}
}
看起来像是Groups.Add不会立即加入到组的连接,而是返回一个需要启动的任务。尝试返回组的结果。作为OnConnectedMethod的结果添加
另请参见:上的更详细说明。看起来像是组。添加不会立即加入到组的连接,而是返回需要启动的任务。尝试返回组的结果。作为OnConnectedMethod的结果添加
另请参见更详细的说明:您的中心代码看起来不错。我将验证SendChatMessage是否被正确的收件人调用。收件人也应该是user.Login或user.ID.ToString()?收件人是登录名。但是它应该以任何一种方式工作,因为我将每个用户分为两个组:)但是如果代码看起来很好,为什么对所有用户和调用者调用NewMessage,而不对组调用NewMessage?是否有任何方法可以调试谁在哪个组中???组与.All和.Caller片段是分开的。您需要确保它正在尝试将您的用户添加到相应的组中。至于能够调试并找出谁在哪个组中:除非包含SiganlR源代码并逐步完成源代码,否则您将无法调试。您的Hub代码看起来不错。我将验证SendChatMessage是否被正确的收件人调用。收件人也应该是user.Login或user.ID.ToString()?收件人是登录名。但是它应该以任何一种方式工作,因为我将每个用户分为两个组:)但是如果代码看起来很好,为什么对所有用户和调用者调用NewMessage,而不对组调用NewMessage?是否有任何方法可以调试谁在哪个组中???组与.All和.Caller片段是分开的。您需要确保它正在尝试将您的用户添加到相应的组中。至于能够调试并找出谁在哪个组中:除非包含SiganlR源代码并逐步完成源代码,否则无法调试。