我有外部服务,我想每20-30秒调用一次,并使用SignalR
使客户端可以访问,但我不确定我是否应让客户端使用JavaScript调用服务器{{1循环或如果我应该让服务器运行自己的循环并将信息推送到客户端。我正在寻找动态页面更新,以显示用户当前在Xbox 360 / Xbox One或PlayStation网络上播放的内容。
目前,我在setInterval循环中从客户端调用服务器端代码,但我不确定这会扩展得多好。我之前一直在通过AJAX进行Web API 2调用,但这会很快占用带宽。外部服务不是我的,因此获得模拟实时结果的唯一方法是定期向外部服务发送请求。我在服务器端循环中看到的唯一问题是线程阻塞。我不想在循环运行时停止当前线程。
客户端代码:
setInterval
服务器端集线器:
var profile = $.connection.profileHub;
profile.client.receiveXboxProfile = function (profile) {
console.log(profile.GamerTag);
};
profile.client.receivePSNProfile = function (profile) {
console.log(profile.PSNId);
};
$.connection.hub.start()
.done(function () {
function GetGamerProfiles() {
profile.server.sendXboxProfile(window.UserName)
.done(function() {
})
.fail(function (error) {
console.log('SignalR ' + error);
});
profile.server.sendPSNProfile(window.UserName)
.done(function () {
})
.fail(function (error) {
console.log('SignalR ' + error);
});
}
GetGamerProfiles();
var id = setInterval(function () {
GetGamerProfiles();
}, 20000);
});
由于我不控制外部服务,因此SignalR不是解决此问题的最佳解决方案,但我对SignalR和HTML 5 websockets的概念非常感兴趣。通常,使用SignalR在客户端或服务器上定期更新是否更好?