2012-02-14 8 views
2

SignalR 0.4を掘り始めましたが、問題が残っています。私は物事をシンプルに保つためにどの同じページ上の2つの異なるハブを持っているしたいと思います:2つのハブを持つSignalRの作業を行うことができません

public class ChatHub : Hub 
{ 
    public void Send(string message) 
    { 
     Clients.addMessage(message); 
    } 
} 

public class Chat2Hub : Hub 
{ 
    public void Send2(string message) 
    { 
     Clients.addMessage2(message); 
    } 
} 

これは私のクライアントコードです:

function initChat() { 
    var chat = $.connection.chat; 

    chat.addMessage = function (message) {...}; 
    $('.send-cmd').click(function() {...}); 

    return $.connection.hub.start(); 
} 

function initChat2() { 
    var chat2 = $.connection.chat2; 

    chat2.addMessage2 = function (message) {...}; 
    $('.send2-cmd').click(function() {...}); 

    return $.connection.hub.start(); 
} 

$(function() { 
    initChat().done(function() { 
     initChat2(); 
    }); 
}); 

十分なシンプルな、しかし、私は彼らが一緒に働くことはできません。この例では、「チャット」は正しく機能し、「チャット2」はエラーなしで失敗します。 初期化の順序を逆にすると、逆のことが起こります。

私には何が欠けていますか?

答えて

3

ハブ接続を2回開始します。すべてのハブに対して1つの接続があるので、$ .connection.hub.start()を一度呼び出すだけで済みます。

+0

動作しません。 signalR.start()には、すでに利用可能なトランスポートがあるかどうかをチェックし、約束を即座に解決するチェックもあります。 Great library BTW :-) – iacoware

+0

何がうまくいかない?一度始める?あなたはコードの問題の束を持っています。 startを呼び出す前に、すべてのハブのすべてのイベントに登録する必要があります。 – davidfowl

+0

あなたは(もちろん)正しいです。 hub.start()はすべてのワイヤーアップが完了した後で呼び出さなければなりません。 – iacoware

関連する問題