3

私はMVC3とSignalerで本当に奇妙な問題を抱えています。私は単純なハブを持っています。

[HubName("test")]
public class Test: Hub
{
    public object GetStuff()
    {
        return new { dummy = "Test" };
    }
}

そして、いくつかのクライアント側のコード。

var connection = $.connection.test;
connection.start();
connection.getStuff();

これはエラーをスローします。

TypeError:オブジェクト#にはメソッド'start'がありません

私が代わりにやるなら

var connection = $.connection("test");

別のエラーが発生します。

TypeError:オブジェクト#にはメソッドがありません'getStuff' jquery-1.6.4.min.js:4

POST http:// localhost:63021 / Controller / test / negotiate 405(メソッドは許可されていません)

何らかの理由でコントローラーの下でネゴシエートしようとしていることに注意してください。

登録する必要のある特定のルートはありますか?私が知らない他の魔法?

更新 だから、コンソールで少し遊んでください-最初のバージョンは実際に私が呼び出すことができるgetStuff()を持つオブジェクトを作成します。しかし、最初にstart()を呼び出さなければならないため、Signalrがスローされます-これは存在しません!2つ目は、start()を持っているが、getStuff()を持っていないオブジェクトを作成します。

UPDATE2 代わりに$.connection.hub.startを実行してみました。これはコンソールでは機能するようですが、ページのオンロードでは機能しません。ハブ呼び出しが行われる前に開始が終了していない可能性がありますか?非同期ですか?

4

3 に答える 3

7

SignalR接続の開始は瞬時ではありません。connection.GetStuff();接続がまだ確立されていない場合、に電話をかけると失敗する可能性があります。ハブへの接続が確立された後にこのコードを実行する場合は、コールバック関数を使用する必要があります。

var connection = $.connection.test;
$.connection.hub.start(function(){        
    // By convention all exposed hub methods start with lowercase
    connection.getStuff();
});

ハブクイックスタート:https ://github.com/SignalR/SignalR/wiki/QuickStart-Hubs

SignalR javascriptクライアントの詳細:https ://github.com/SignalR/SignalR/wiki/SignalR-JS-Client-Hubs

于 2012-04-07T20:21:11.907 に答える
1

ハブ部分を追加する必要があります。

$.connection.hub.start();
于 2012-09-20T19:20:06.407 に答える
0

これを試して:

var connection = $ .connection( "@ Url.Content("〜/ echo ")");

于 2012-04-09T03:53:49.597 に答える