我有一个signalR服务器队列hab。我试图启动服务器并在我的SearchResultListItemView视图中单击按钮时向服务器发送一个消息。但无法正常工作,我收到错误“Uncaught TypeError:无法读取属性'队列'”。
这是我的SearchResultListItemView视图,我必须在发生click事件时调用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);
}
}
答案 0 :(得分: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");
queue.send(name, 'hannan19')
应该是:
queue.server.send(name, 'hannan19')