在全ajax导航网页中使用SignalR
Using SignalR in full ajax navigated web pages?
我正在努力适应SignalR。但我需要一个黄金点来完全理解它。我感觉离抢夺只有一步之遥…
我的代码:Javascript:
$(function() {
var connection = $.connection.signalR;
connection.client.broadcastTotalOnline = function (totalOnlineUser) {
$('#TotalOnline').html(totalOnlineUser);
};
$.connection.hub.start().done(function() {
console.log("Connection Started!");
});
});
c# :
public class SignalR : Hub
{
public void SendTotalOnline()
{
var context = GlobalHost.ConnectionManager.GetHubContext<SignalR>();
using (var dbContextx = new db_Oyun())
{
while (true)
{
int totalOnlineUser = dbContextx.tbl_User.Count(x => x.Online);
context.Clients.All.broadcastTotalOnline(totalOnlineUser);
Thread.Sleep(1000);
}
}
}
}
上面的代码是完美的工作,但当我调用新的页面与AJAX的内部内容。然后我想用同样的中心,同样的物体同样的中心,不同的物体。它不工作。不调用alert;但是当我删除上面的信号r代码时,在代码下工作。
$(function () {
var connection = $.connection.signalR;
connection.client.broadcastTotalOnline = function (totalOnlineUser) {
alert(totalOnlineUser);
};
});
当您启动SignalR连接时,它检查$.connection.signalR.client
对象以查看您是否添加了任何回调。如果您在连接启动后使用普通赋值添加回调,SignalR将不会拾取该回调。
要在连接启动后添加回调,可以使用$.connection.signalR.client.on
:
$.connection.signalR.client.on("broadcastTotalOnline", function (totalOnlineUser) {
alert(totalOnlineUser);
});
如果您试图在开始连接之前向Hub添加回调,那么即使使用.on
也无法工作。
在启动连接之前,您必须至少有一个回调连接到您计划使用的每个集线器。您设置的回调可以是一个永远不会调用的虚拟回调。添加回调只是向SignalR表明您对来自该集线器的消息感兴趣的一种方式。
您不需要在您的情况下添加任何虚拟回调,因为在开始连接之前您已经连接到broadcastTotalOnline
。
如果你想删除一个回调,你可以使用$.connection.signalR.client.off
和你之前添加的函数的引用:
var callback = function (totalOnlineUser) {
alert(totalOnlineUser);
};
$.connection.signalR.client.on("broadcastTotalOnline", callback);
$.connection.signalR.client.off("broadcastTotalOnline", callback);
相关文章:
- 如何防止网页加载后自动启动功能
- 如何使用Node.js最有效地解析网页
- 刷新后保留对网页的更改
- AJAX不会在文件上传后重定向到网页-POST方法
- 使用谷歌网站翻译器自动翻译网页
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- 仅重新加载网页的一部分
- 每次提交表单时都会重新加载网页
- 打开网页后立即获取网页的活动javascript函数
- SignalR客户端启动连接时如何设置用户
- SignalR:调用集线器方法时出现内部服务器错误
- 链接两个网页或网络应用程序的最佳方式
- Android键盘不适用于包含Javascript的网页
- 网页上失败的javascript会导致所有其他脚本失败
- 在网页上显示当前股票报价
- HTML 5 和 3.js 代码不会在网页上显示任何内容
- 使用javascript替换网页上的文本
- 如何建立一个网页,检查我的路由器网络接口是否可以访问
- 我的点击登录在网页上不起作用
- 在全ajax导航网页中使用SignalR