SignalR组没有获取数据

时间:2012-11-23 14:44:13

标签: c#-4.0 session asp.net-mvc-4 signalr signalr-hub

您好我遇到的问题是我的信号组客户在一个组中没有收到所发送的信息。

我已经用两种方式试过了这两种方式,但两种方式都没有用。

在加载的网页上,客户端将调用服务器获取组名,然后在集线器上调用方法以加入该组中的用户。

的JavaScript .....

        var connectionOpen = false;
        var myHub;
        $(function () {
            myHub = $.connection.myHub;
            myHub.client.showMessage = alertMessage;
            $.connection.hub.start(function () {
                connectionOpen = true;
                joinGroup();
            });
        });

        function joinGroup() {
            $.ajax({
                url: 'Controller/GetGroupName,
                type: 'POST',
                success: function (group) {
                    if (connectionOpen == true)
                        tileHub.server.joinGroup(group);
                }
            });
        }

function alertMessage(string value){
alert(value);
}

控制器

[HttpPost]
public JsonResult GetGroupName()
{
    return Json("Foo");
}

myHub

public void JoinGroup(string groupName)
{
    Groups.Add(Context.ConnectionId, groupName);
}

我已经多次介绍了代码,我可以看到我正在连接确定并加入该组但是当我尝试发回给该组时没有任何反应

我是从我的控制器

发送给小组的
GlobalHost.ConnectionManager.GetHubContext<myHub>().Clients.Group("Foo").showMessage("Hello");

这是我尝试过的第二种方式,我也试过从集线器发送给小组,但仍然没有快乐。

任何帮助将不胜感激......

更新 由于David Fowler已经解决了这个问题....

这是一个错误,因为我使用HubName属性给Hub一个不同的名字,然后使用longPolling传输给signalR。删除属性可以让它知道工作。我们还提供了修复程序,请参阅https://github.com/SignalR/SignalR/issues/1039

2 个答案:

答案 0 :(得分:3)

少数事情:

  1. 请务必阅读此帖子中的“重新加入群组”部分。 http://weblogs.asp.net/davidfowler/archive/2012/11/11/microsoft-asp-net-signalr.aspx
  2. 您是否真的需要进行ajax调用以从服务器中找出组名?你不能直接在页面中呈现它吗?
  3. 如果您将“Foo”硬编码为组名,那会失败吗?

答案 1 :(得分:0)

在dfowler的答案中找到:https://github.com/SignalR/SignalR/issues/1039&lt;没有在评论中看到它。

解决方案是:从Hub中删除HubName属性。