我正在尝试使用 DotVVM 框架运行 signalR,但与示例集线器的连接存在问题。
这是我遇到问题的js代码。$.connection
总是undefined
所以我无法与我的 SignalR Hub 建立任何连接,这很奇怪。是否可以将 SignalR 与 DotVVM 框架一起使用?
$(function () {
var connection = $.connection.testHub();
var proxy = connection.createHubProxy("testHub");
connection.start();
proxy.client.hello = function (message) {
console.log(message);
}
})
脚本注册
<script src="~/AdminTemplate/Components/jquery/dist/jquery.min.js"></script>
<script src="~/AdminTemplate/Scripts/jquery.signalR-2.2.2.js"></script>
<%--<script src="~/signalr/hubs"></script>--%>
<script src="~/Hubs/Scripts/test.js"></script>
这是我的简单集线器,它只发送一些字符串
public class TestHub : Hub
{
public void Hello()
{
var message = "test";
Clients.All.hello(message);
}
}
创业班
public void Configuration(IAppBuilder app)
{
var compositionRootFactory = new CompositionRootFactory();
var container = compositionRootFactory.CreateContainer();
var serviceInitializer = container.Resolve<ServicesInitializer>();
serviceInitializer.Initialize();
var applicationPhysicalPath = HostingEnvironment.ApplicationPhysicalPath;
app.Use<AuthorizeErrorMiddleware>();
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Login"),
Provider = new CookieAuthenticationProvider
{
OnApplyRedirect = e => DotvvmAuthenticationHelper.ApplyRedirectResponse(e.OwinContext, e.RedirectUri)
}
});
app.MapSignalR();
// use DotVVM
var dotvvmConfiguration = app.UseDotVVM<DotvvmStartup>(applicationPhysicalPath, options: options =>
{
options.AddDefaultTempStorages("temp");
options.Services.AddSingleton<IViewModelLoader>(serviceProvider => new WindsorViewModelLoader(container));
options.AddUploadedFileStorage("App_Data/Temp", TimeSpan.FromSeconds(30));
});
#if !DEBUG
dotvvmConfiguration.Debug = false;
#endif
}