5

これもここで問題として開きましたが、誰かがこれを見たことを願っています..

IConnected/IDisconnect を実装する非常に単純なハブがあります。スタンドアロン プロジェクトでは、このハブは非常に優れたテストを行いました。

実際のプロジェクトにドロップすると、既に他のハブがいくつかありますが、追加すると、使用可能なハブがなくなりました (/signalr/hubs に何も表示されないことが確認されました)。次に、このハブの IConnected/IDisconnect をコメントアウトして再コンパイルしたところ、他の部分と一緒に表示されました。インターフェイスを追加すると、すべてが壊れました。

誰もこれを見たことがありますか?いくつかの構成が欠落しているか、何かありますか?

public class ChatHub : Hub, IConnected, IDisconnect
{
    public void Test(string message)
    {

    }

    public System.Threading.Tasks.Task Connect(IEnumerable<string> groups)
    {
        this.Clients.onNewUserOnline(Context.ConnectionId);
        return new Task(() => { });
    }


    public Task Reconnect(IEnumerable<string> groups)
    {
        this.Clients.onNewUserOnline(Context.ConnectionId);
        return new Task(() => { });
    }

    public Task Disconnect()
    {
        this.Clients.onUserOffline(Context.ConnectionId);
        return new Task(() => { });
    }
}
4

1 に答える 1

7

ここに同様の質問へのリンクが ありますIs there a way to get number of connections in Signalr hub group?

それでも問題が解決しない場合は、SignalR 0.5.1 の新しい Connection State を参照してください。

接続状態の変化

SignalR 接続は常にユーザーにとってブラック ボックスであり、これにより基になる接続状態の変化を検出することが困難でした。JavaScript および .NET クライアントで新しい stateChanged イベントを公開しました。これにより、状態の変化をリッスンし、さまざまな方法で対応することができます。接続が再接続状態になり、10 秒後に回復しなかった場合にユーザーにメッセージを表示する例を次に示します。

var chat = $.connection.chat;
var timeout = null;
var interval = 10000;
chat.addMessage = function (msg) {
    $('#messages').append('<li>' + msg + '</li>');
};
$.connection.hub.stateChanged(function (change) {
    if (change.newState === $.signalR.connectionState.reconnecting) {
        timeout = setTimeout(function () {
            $('#state').css('backgroundColor', 'red')
                .html('The server is unreachable...');
        }, interval);
    } else if (timeout && change.newState === $.signalR.connectionState.connected) {
        $('#state').css('backgroundColor', 'green')
            .html('The server is online');
        clearTimeout(timeout);
        timeout = null;
    }
});
$.connection.hub.start();
于 2012-06-12T02:39:33.833 に答える