Uncaught TypeError: Невозможно прочесть свойство "очередь" неопределенного значения, произошедшее во время интеграции с магистралью и signalR.

У меня есть хаб очереди сервера signalR. Я пытаюсь запустить сервер и отправить сообщение на сервер при нажатии кнопки в моем представлении SearchResultListItemView. Но не могу работать, и я получаю сообщение об ошибке «Uncaught TypeError: Cannot read property '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);
    }
}

person Hannan Hossain    schedule 30.12.2012    source источник


Ответы (1)


Несколько вещей, которые нужно проверить:

  • Убедитесь, что вы используете последнюю версию 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')

person Ken Smith    schedule 31.12.2012
comment
Спасибо за ваш ответ. Я использую jquery.signalR-0.5.3.min.js. потому что я не могу запустить свой проект Visual Studio 2010 после установки jquery.signalR-1.0.0-rc1.js - после установки rc1.js я получаю сообщение об ошибке, подобное тому, что строка версии, указанная для ссылки на пакет 'Microsoft.AspNet.SignalR', неверный. подскажите, пожалуйста, что мне теперь делать ?? - person Hannan Hossain; 01.01.2013