خدمة المكدس + سيغنالر-الذاتي استضافت
-
21-12-2019 - |
سؤال
أنا بناء التطبيق الذي يستخدم سيرفيسستاك ل أبي ريستفول.أحاول دمج سيغنالر لميزات الوقت الحقيقي ، حيث سيتم تشغيل هذا التطبيق على سطح المكتب العميل.الاقتراع الطويل أو أي عمل من هذا القبيل ليس خيارا.المتطلبات هي تطبيق وحدة التحكم ، سيرفيسستاك ، سيغنالر.هل من الممكن أن يكون سيغنالر و سيرفيسستاك الذاتي استضافت معا?
ضع في اعتبارك ما يلي (تطبيق وحدة التحكم الكل في واحد):
بدء التشغيل.جيم >>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Microsoft.Owin.Cors;
using Owin;
namespace RazorRockstars.SelfHost
{
public class StartUp
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
}
أبهوست.جيم >>
namespace RazorRockstars.SelfHost
{
public class AppHost : AppHostHttpListenerBase
{
public AppHost() : base("Test Razor", typeof(AppHost).Assembly) { }
public override void Configure(Container container)
{
LogManager.LogFactory = new ConsoleLogFactory();
Plugins.Add(new RazorFormat());
container.Register<IDbConnectionFactory>(
new OrmLiteConnectionFactory(":memory:", SqliteDialect.Provider));
using (var db = container.Resolve<IDbConnectionFactory>().OpenDbConnection())
{
db.CreateTableIfNotExists<Rockstar>();
db.InsertAll(RockstarsService.SeedData);
}
this.CustomErrorHttpHandlers[HttpStatusCode.NotFound] = new RazorHandler("/notfound");
this.CustomErrorHttpHandlers[HttpStatusCode.Unauthorized] = new RazorHandler("/login");
}
}
}
البرنامج.جيم >>
using System.Threading;
using Microsoft.Owin.Hosting;
using ServiceStack.Logging;
using ServiceStack.Text;
namespace RazorRockstars.SelfHost
{
class Program
{
static void Main(string[] args)
{
string listingUrl = "http://*:2001/";
string listingUrl2 = "http://*:2002/";
LogManager.LogFactory = new ConsoleLogFactory();
var appHost = new AppHost();
appHost.Init();
appHost.Start(listingUrl);
// the next line will result in error: "The process cannot access the file because it is being used by another process"
WebApp.Start<StartUp>(listingUrl2);
"\n\nListening on http://*:2001/..".Print();
"Type Ctrl+C to quit..".Print();
Thread.Sleep(Timeout.Infinite);
}
}
}
إذا كنت ترغب في تجربة هذا التحدي بنفسك ، فما عليك سوى الحصول على نسخة من https://github.com/ServiceStack/RazorRockstars/tree/master/src/RazorRockstars.SelfHost ومحاولة الحصول عليه للعمل.
أي مساعدة مع هذا دعابة الدماغ من شأنه أن يساعد كثيرا.
الأهم من ذلك ، أنا أتطلع إلى معرفة ما إذا كان هذا ممكنا أم لا.
المحلول
بناء على مشروع نجم الروك هذا.لقد قمت بتثبيت حزمة نوجيت التالية:
Install-Package Microsoft.AspNet.SignalR.SelfHost
اختياري إذا كنت تريد كورس:
Install-Package Microsoft.Owin.Cors
هنا هو بلدي Program.cs
ملف:
class Program
{
static void Main(string[] args)
{
LogManager.LogFactory = new ConsoleLogFactory();
var appHost = new AppHost();
appHost.Init();
appHost.Start("http://*:2001/");
using (WebApp.Start<Startup>("http://*:2002/"))
{
"\n\nListening on http://*:2001/..".Print();
"SignalR listening on http://*:2002/".Print();
"\n\nType Ctrl+C to quit..".Print();
Thread.Sleep(Timeout.Infinite);
}
}
}
class Startup
{
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
EnableDetailedErrors = true,
EnableJSONP = true
};
map.RunSignalR(hubConfiguration);
});
}
}
أنا مكنت كورس وسمح جسونب ، وهذا متروك لك.