在SignalR中未调用客户端方法

时间:2014-01-23 11:27:07

标签: c#-4.0 signalr

我使用信号R 1.0和c#

问题大部分时间是使用IE(第10版),有时使用chrome(第28版)。

我的客户端方法没有被执行。

我有聊天功能和页面加载

$(document).ready(function(){
   //here i call server method to create group between two users
});

chat.client.groupcreated = function(){} //this is not invoked

在服务器端我写Client.groupcreated()

它在FF中起作用。更有趣的是,如果我在服务器端的cs代码中设置了一个断点,它在IE中的工作也是

1 个答案:

答案 0 :(得分:0)

Oppss ......我犯了一个愚蠢的错误

在创建组的服务器方法中,我正在做类似下面的事情

Groups.Add(connectionid1,groupname);
Groups.Add(connectionid2,groupname);
Clients.Group(strGroupName).hellworld(); //no users added yet to the group while this line executes

上述代码的问题是向信号器组添加成员实际上是异步的,因此立即向该组发送消息将不起作用,因为组的添加成员可能尚未完成。

<强>解决方案

 Groups.Add(connectionid1, groupname).ContinueWith(t =>
                Groups.Add(connectionid2, groupname).ContinueWith(t2 => 
                    Clients.Group(groupname).helloworld());

在调用客户端方法

之前等待任务完成

顺便说一句,感谢您发表评论