0

我正在尝试使用 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
}  
4

0 回答 0