Xer*_*ati 3 asp.net-mvc c#-4.0 asp.net-mvc-3 signalr
我对MVC3和信号器有一个非常奇怪的问题..我有一个简单的集线器;
[HubName("test")]
public class Test: Hub
{
public object GetStuff()
{
return new { dummy = "Test" };
}
}
Run Code Online (Sandbox Code Playgroud)
还有一些客户端代码;
var connection = $.connection.test;
connection.start();
connection.getStuff();
Run Code Online (Sandbox Code Playgroud)
这会引发错误;
TypeError:Object#没有方法'start'
如果我改为做
var connection = $.connection("test");
Run Code Online (Sandbox Code Playgroud)
我得到了一个不同的错误;
TypeError:Object#没有方法'getStuff'jquery-1.6.4.min.js:4
POST http:// localhost:63021/Controller/test/negotiate 405(方法不允许)
注意它出于某种原因试图在控制器下进行协商?
我需要注册一些特定的路线吗?其他一些我不知道的魔法?
更新 所以玩控制台 - 第一个版本确实创建了一个具有getStuff()的对象,我可以调用它.但是信号器会抛出,因为我必须首先调用start() - 它不存在!第二个创建一个具有start()的对象,但它没有getStuff()..
UPDATE 2 尝试改为$ .connection.hub.start.这似乎在控制台中工作,但不在页面上加载..可能在集线器调用之前启动还没完成?它是异步的吗?
启动SignalR连接不是即时的.connection.GetStuff();如果尚未建立连接,则呼叫可能会失败.如果您希望在建立与集线器的连接后运行此代码,则应使用回调函数.
var connection = $.connection.test;
$.connection.hub.start(function(){
// By convention all exposed hub methods start with lowercase
connection.getStuff();
});
Run Code Online (Sandbox Code Playgroud)
Hub快速入门:https://github.com/SignalR/SignalR/wiki/QuickStart-Hubs
深入了解SignalR javascript客户端:https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client-Hubs
| 归档时间: |
|
| 查看次数: |
2896 次 |
| 最近记录: |