我对 MVC3 和信号器有一个非常奇怪的问题。我有一个简单的集线器;
[HubName("test")]
public class Test: Hub
{
public object GetStuff()
{
return new { dummy = "Test" };
}
}
还有一些客户端代码;
var connection = $.connection.test;
connection.start();
connection.getStuff();
这会引发错误;
TypeError: Object # has no method 'start'
如果我改为
var connection = $.connection("test");
我得到一个不同的错误;
TypeError: Object # has no method 'getStuff' jquery-1.6.4.min.js:4
POST http://localhost:63021/Controller/test/negotiate 405(不允许的方法)
注意它出于某种原因试图在控制器下进行协商?
我需要注册一些特定的路线吗?还有什么我不知道的魔法?
更新 所以玩了一下控制台——第一个版本实际上创建了一个我可以调用的具有 getStuff() 的对象。但是 signalr 抛出了,因为我必须先调用 start() - 这不存在!第二个创建了一个对象,它有 start(),但它没有 getStuff()..
更新 2 尝试做 $.connection.hub.start 代替。这似乎在控制台中有效,但在页面 onload 中无效。在进行集线器调用之前可能启动没有完成?是异步的吗?