SignalR外部服务定时循环 - 服务器或客户端

时间:2014-04-10 13:30:14

标签: signalr client-side server-side long-polling signalr-hub

我有外部服务,我想每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在客户端或服务器上定期更新是否更好?

0 个答案:

没有答案