protected void Application_Start()
 {
     AreaRegistration.RegisterAllAreas();
     GlobalConfiguration.Configure(WebApiConfig.Register);
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
     RouteConfig.RegisterRoutes(RouteTable.Routes);
     BundleConfig.RegisterBundles(BundleTable.Bundles);
     FleckServer.StartBroadcast();
 }
Exemple #2
0
 protected void Application_Start()
 {
     AreaRegistration.RegisterAllAreas();
     GlobalConfiguration.Configure(WebApiConfig.Register);
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
     RouteConfig.RegisterRoutes(RouteTable.Routes);
     BundleConfig.RegisterBundles(BundleTable.Bundles);
     FleckServer.StartBroadcast();
     //FleckServer.StartEcho();
     GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
 }
Exemple #3
0
        static void Main()
        {
            HostFactory.Run(config =>
            {
                config.SetDescription("JsonServices Sample Server");
                config.SetServiceName(ServiceName);
                config.Service <JsonServer>(sc =>
                {
                    var logger = HostLogger.Get <Program>();
                    sc.ConstructUsing(() =>
                    {
                        // websocket transport
                        var server     = new FleckServer(Url);
                        var serializer = new Serializer();
                        var executor   = new StubExecutor();
                        var provider   = new StubMessageTypeProvider();
                        var jsonServer = new JsonServer(server, provider, serializer, executor);

                        // optional: set product name and version information
                        jsonServer.ProductName    = ServiceName;
                        jsonServer.ProductVersion = "0.0.1-beta";
                        return(jsonServer);
                    });

                    sc.WhenStarted(js =>
                    {
                        logger.Info($"{js.ProductName} starts listening: {Url}");
                        js.Start();
                    });

                    sc.WhenStopped(js =>
                    {
                        logger.Info($"{js.ProductName} is stopping...");
                        js.Dispose();
                    });
                });
            });
        }
Exemple #4
0
        public static void Main(string[] args)
        {
            Console.WriteLine(@"   _____ __                     ________          __ ");
            Console.WriteLine(@"  / ___// /_  ____ __________  / ____/ /_  ____ _/ /_");
            Console.WriteLine(@"  \__ \/ __ \/ __ `/ ___/ __ \/ /   / __ \/ __ `/ __/");
            Console.WriteLine(@" ___/ / / / / /_/ / /  / /_/ / /___/ / / / /_/ / /_  ");
            Console.WriteLine(@"/____/_/ /_/\__,_/_/  / .___/\____/_/ /_/\__,_/\__/  ");
            Console.WriteLine(@"                     / _/            Sock Chat Server");

#if DEBUG
            Console.WriteLine(@"============================================ DEBUG ==");
#endif

            string configFile = GetFlagArgument(args, @"--cfg") ?? CONFIG;

            // If the config file doesn't exist and we're using the default path, run the converter
            if (!File.Exists(configFile) && configFile == CONFIG)
            {
                ConvertConfiguration();
            }

            using IConfig config = new StreamConfig(configFile);

            // Load database and data provider libraries
            ReflectionUtilities.LoadAssemblies(@"SharpChat.Database.*.dll");
            ReflectionUtilities.LoadAssemblies(@"SharpChat.DataProvider.*.dll");

            // Allow forcing a sqlite database through console flags
            string sqliteDbPath = GetFlagArgument(args, @"--dbpath");
            string databaseBackendName;
            object databaseArgument;
            if (!string.IsNullOrEmpty(sqliteDbPath))
            {
                Logger.Write($@"Forcing SQLite: {sqliteDbPath}");
                databaseBackendName = @"sqlite";
                databaseArgument    = sqliteDbPath;
            }
            else
            {
                databaseBackendName = GetFlagArgument(args, @"--dbb") ?? config.ReadValue(@"db");
                databaseArgument    = config.ScopeTo($@"db:{databaseBackendName}");
            }

            IDatabaseBackend databaseBackend = new ObjectConstructor <IDatabaseBackend, DatabaseBackendAttribute, NullDatabaseBackend>()
                                               .Construct(databaseBackendName, databaseArgument);

            using HttpClient httpClient = new HttpClient {
                      DefaultUserAgent = @"SharpChat/1.0",
                  };

            string        dataProviderName = GetFlagArgument(args, @"--dpn") ?? config.ReadValue(@"dp");
            IDataProvider dataProvider     = new ObjectConstructor <IDataProvider, DataProviderAttribute, NullDataProvider>()
                                             .Construct(dataProviderName, config.ScopeTo($@"dp:{dataProviderName}"), httpClient);

            string portArg = GetFlagArgument(args, @"--port") ?? config.ReadValue(@"chat:port");
            if (string.IsNullOrEmpty(portArg) || !ushort.TryParse(portArg, out ushort port))
            {
                port = DEFAULT_PORT;
            }

            using IServer wss    = new FleckServer(new IPEndPoint(IPAddress.Any, port));
            using ChatServer scs = new ChatServer(config, wss, dataProvider, databaseBackend);

            using ManualResetEvent mre = new ManualResetEvent(false);
            Console.CancelKeyPress    += (s, e) => { e.Cancel = true; mre.Set(); };
            mre.WaitOne();

            if (dataProvider is IDisposable dpd)
            {
                dpd.Dispose();
            }
            if (databaseBackend is IDisposable dbd)
            {
                dbd.Dispose();
            }
        }