我在我的应用程序中使用signalR。
这是客户端代码:
<script src="Scripts/jquery-1.6.4.js" type="text/javascript"></script>
<script src="Scripts/jquery.signalR-2.2.0.js" type="text/javascript"></script>
<script src="signalr/hubs" type="text/javascript"></script>
<script type="text/javascript">
var data = $.connection.Hubclass;
alert(data); // data is undefine
</script>
我的中心课程如下:
public class Hubclass :Hub
{
public void getdata(string msg)
{
Clients.All.send(msg);
}
}
我在Owin的启动课程如下:
[assembly: OwinStartup(typeof(Startup1))]
public class Startup1
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
这是我在web.config中使用的配置:
<appSettings>
<add key="owin:appStartup" value="Startup1" />
</appSettings>
在Global.asax类文件中,我还添加了以下代码:
RouteTable.Routes.MapHubs();
当我启动应用程序时,这是我得到的错误:
错误CS0619'InformationRRouteExtensions.MapHubs(RouteCollection)'是 过时的:'在Owin Startup类中使用IAppBuilder.MapSignalR。看到 http://go.microsoft.com/fwlink/?LinkId=320578了解更多详情
答案 0 :(得分:0)
如果我没记错,客户端代理是骆驼式的(生成的或动态的),所以你应该使用
$.connection.hubclass
或添加到集线器类名称属性
[HubName("Hubclass")]
并且你也不需要通过RouteTable设置信号器路由.Routes.MapHubs owin中间件将为你处理路由......
编辑:也许您可以通过签名/集线器请求检查生成的代理是否正确下载,请在浏览器中检查您的网络选项卡。如果没有,则可能存在OWIN初始化问题,可能您必须在appConfig设置命名空间或友好名称才能进行正确的启动类检测,请检查startup detection
<add key="owin:appStartup" value="StartupDemo.ProductionStartup" />