Saya mencoba menjalankan SignalR di Nancy di aplikasi konsol.
Ketika browser saya melakukan $.connection.hub.start()
maka mendapat 404 - NotFound
untuk //localhost:667/negotiate?clientProtocol=1.3
----8<----
Saya (mencoba) menjalankan Nancy di satu port dan SignalR di port lain. Nancy bekerja dengan Razor. SignalR mengembalikan javascript hub dengan baik.
(Maaf atas banyaknya kode di bawah ini tetapi saya belum dapat menguranginya lebih jauh.)
(Pertanyaan ini mungkin dikenali dari pertanyaan sebelumnya - sekarang telah dihapus dan telah saya beri label buruk.)
Kode klien:
<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 );
});
});
Kode server (dalam program konsol berjalan sebagai 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);
}
}