SignalR(具有自托管Nancy)显示404用于协商?clientProtocol = 1.3

Los*_*nos 6 .net self-hosting nancy signalr

我试图在控制台应用程序中运行Nancy中的SignalR.

当我的浏览器$.connection.hub.start()它得到404 - NotFound//localhost:667/negotiate?clientProtocol=1.3

---- 8 <----

我(尝试)在一个端口上运行Nancy而在另一个端口上运行SignalR.南希与剃刀合作.SignalR返回集线器javascript.

(对不起下面的代码量,但是我无法进一步减少它.)
(这个问题可能会从之前已被删除的问题中得到认可 - 我已经标记错误.)

客户代码:

    <script type="text/javascript" src='/Scripts/jquery-1.6.4.min.js'></script>
    <script type="text/javascript" src="/Scripts/jquery.signalR-2.0.0-beta2.js"></script>
    <script src="http://localhost:667/signalr/hubs" type="text/javascript"></script>
var chat;
$(function () {
    $.connection.hub.url = '//localhost:667';
    $.connection.hub.logging = true;
    chat = $.connection.chat;
    chat.client.addMessage = onAddMessage; // declared but not here

    $.connection.hub.start()
        .done(function () {
            alert($.connection.id);
            chat.server.send('Works!');
        })
        .fail(function ( failreason ) {
            alert( failreason );
        });
});
Run Code Online (Sandbox Code Playgroud)

服务器代码(在作为admin运行的控制台程序中)

class Program
{
    static void Main(string[] args)
    {
        const string webUrl = "http://localhost:666";
        const string signalrUrl = "http://localhost:667";

        using (var webHost = new Nancy.Hosting.Self.NancyHost(
            new Uri(webUrl) ))
        {
            using (WebApp.Start<Startup>(signalrUrl))
            {
                webHost.Start();

                Console.Write("Press any key");
                Console.ReadKey();
                webHost.Stop();
            }
        }
    }
}

class Startup
{
    public void Configuration(Owin.IAppBuilder app)
    {
        app.MapHubs(new HubConfiguration() { EnableCrossDomain = true });
        app.UseNancy(new ApplicationBootstrapper());
    }
}

public class ApplicationBootstrapper : DefaultNancyBootstrapper
{
    protected override void ConfigureConventions(
        Nancy.Conventions.NancyConventions nancyConventions)
    {
        nancyConventions.StaticContentsConventions.Add(
        Nancy.Conventions.StaticContentConventionBuilder.AddDirectory(
            "Scripts", @"/Scripts")
        );
        base.ConfigureConventions(nancyConventions);
    }
}

public class Chat : Hub
{
    public void Send(string message)
    {
        Clients.All.addMessage(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

Jab*_*bez 9

我用Signalr 1.1.2和SignalR 2.0.0-beta2尝试了上面的代码.我对你的代码所做的唯一改变是

修改

  $.connection.hub.url = '//localhost:667';
Run Code Online (Sandbox Code Playgroud)

 $.connection.hub.url = 'http://localhost:667/signalr';
Run Code Online (Sandbox Code Playgroud)

并添加了js函数AddMessage来显示收到的消息并成功执行,显示消息'Works!'