1

私はsignalRサーバーキューハブを持っています。SearchResultListItemView ビューでボタンがクリックされたときに、サーバーを起動してサーバーにメッセージを送信しようとしています。しかし、機能せず、「Uncaught TypeError: プロパティ 'queue' を読み取れません」というエラーが表示されます。

これは私の SearchResultListItemView ビューで、クリック イベントが発生したときに signalR サーバーを呼び出す必要があります。クリック時にサーバーに値を送信したいだけです。次に、変更をロードするために他のすべてのクライアントに応答を送信します。これどうやってするの?またはここで何が問題ですか??

window.SearchResultListItemView = Backbone.View.extend({
tagName: "tr",

initialize: function () {

    var _this = this;
    this.model.bind("change", this.render, this);
    this.model.bind("destroy", this.close, this);
    // here is the error occured in this line:
    var queue = $.connection.queue;

    // Start the connection
    $.connection.hub.start(function () {
        queue.ReloadQueueMember("Hello World!", "hi all");
    });
},

events: {
    "click a": "JoinQueue"
},

JoinQueue: function (e) {       
    e.preventDefault();
    var name = this.model.get("QueueName");
    var Id = this.model.get("CustomerId");

     //SignalR Proxy created on the fly
      queue.send(name, 'hannan19')
      .done(function () {
            console.log('Success!')
       })
       .fail(function (e) {
            console.warn(e);
       });
},

render: function () {
    var data = this.model.toJSON();
    _.extend(data, this.attributes);
    $(this.el).html(this.template(data));
    return this;
}
});

これが私の SignalR サーバーです。

public class Queue : Hub
{
    public void Send(string QueueName, string UserName)
    {
        Clients.ReloadQueueMember(QueueName, UserName);
    }
}
4

1 に答える 1

0

いくつかの確認事項:

  • NuGet の最新バージョンを使用していることを確認してください (現時点では 1.0.0-rc1 です。確認するには、「プレリリースを含める」をチェックする必要があります)。

  • が定義されていない場合$.connectionは、静的な SignalR クライアント (現時点では "jquery.signalR-1.0.0-rc1.js") を読み込んでいることを確認してください。お気に入りのブラウザーの開発者ツールの [ネットワーク] タブをチェックして、それが検出され、読み込まれていることを確認します。

  • が定義されていない場合$.connection.queueは、動的な SignalR クライアント (~/signalr/hubs) を読み込んでいることを確認してください。

  • この行は間違っています (1.0.0-rc1 を使用している場合):

queue.ReloadQueueMember("Hello World!", "hi all");

そのはず:

queue.client.reloadQueueMember("Hello World!", "hi all");

  • 同様に、この行は 1.0.0-rc1 では間違っています。

queue.send(name, 'hannan19')

そのはず:

queue.server.send(name, 'hannan19')

于 2012-12-31T20:17:45.250 に答える