2

我在 ASP.Net Web 应用程序项目中使用 SignalR,但遇到了问题。我的目标是在站点的管理方面进行任何更改,导致某些 GridView 刷新。我计划通过发送信号来运行一些 javascript,从而刷新包含 GridViews 的更新面板。

现在的问题是我无法获得我的集线器试图调用以在客户端中执行的任何代码。我在 jquery.SignalR.js 文件中的 FireBug 中收到以下错误,但我不确定如何继续修复它:

Firefox can't establish a connection to the server at ws://localhost:40068/signalr?data=[]&transport=webSockets&clientId=92e4f7b9-0118-4fd9-bb55-5f22338d6162.

(function(n,t){"use strict";if(typeof ...on=n.signalR=i})(window.jQuery,window)

抛出此错误后,它看起来仍然在建立连接,但没有执行通过集线器发送的任何 javascript

我在我的站点中设置了以下中心:

namespace testProject
{
    public class statusChanges : Hub
    {
        public void ServerChange()
        {
            Clients.serverChange();

        }
    }
}

我在管理部分的按钮单击事件中有以下代码。调试显示此代码正在由服务器运行:

var clients = Hub.GetClients<statusChanges>();
clients.serverChange();

最后,我的页面中有这段代码,试图在收到信号以确认它正在工作时启动警报。

<script type="text/javascript">
    $(function () {
        var statusChange = $.connection.statusChanges;
        statusChange.serverChange = function () {
            alert(8);
        };
        $.connection.hub.start();
    });
</script>

有没有人知道为什么这不会运行或 FireBug 错误意味着什么?

4

1 回答 1

5

萤火虫中的错误是预期的。这是 websocket 连接失败,不用担心,因为 SignalR 会退回到长轮询。您在服务器端有一个与客户端事件同名的方法。那是行不通的。

你想要这样的东西:

public Administration : Hub {
}

事件处理程序:

var clients = Hub.GetClients<Administration>();
clients.serverChange();

Javascript:

<script type="text/javascript">
    $(function () {
        var administration= $.connection.administration;
        administration.serverChange = function () {
            alert(8);
        };
        $.connection.hub.start();
    });
</script>
于 2011-11-02T22:31:32.037 回答