【发布时间】:2011-12-20 14:04:01
【问题描述】:
我在 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 错误意味着什么?
【问题讨论】:
-
我有点困惑,serverChange javascript 函数是否与导致回发的按钮位于同一页面上?您是否使用浏览器的两个实例进行测试?正如您正确指出的那样,萤火虫错误不是问题,无论如何都使用长轮询而不是网络套接字afaik来设置连接。
-
有两个不同的页面;导致事件触发的管理员和应该收到警报的查看器。我在两个不同的浏览器中查看它。
标签: c# javascript jquery asp.net signalr