コード例 #1
0
ファイル: AdvancedChatNetwork.cs プロジェクト: ModernMAK/BoEG
        public void StartServer(IPEndPoint socketInfo, int maxRequests = 0)
        {
            if (IsOnline)
            {
                _messages.Add(new Tuple <Guid, string>(Guid.Empty, "Cannot Start Server While Online"));
                UpdateText();
                return;
            }

            _networkServer                     = new NetworkServer(socketInfo);
            _messageServer                     = new MessageServer(_networkServer);
            _messageServer.Started            += ServerOnServerStarted;
            _messageServer.Stopped            += ServerOnSeverStopped;
            _messageServer.ClientConnected    += ServerOnClientConnected;
            _messageServer.ClientDisconnected += ServerOnClientDisconnected;
            _messageServer.ReceivedFrom.Register(NetCode.UserMessage, ServerOnUserMessageReceived);
            _messageServer.ReceivedFrom.Register(NetCode.RawMessage, ServerOnUserMessageReceived);
            _messageServer.ReceivedFrom.Register(NetCode.UpdateUsername, ServerOnUpdateUserNameReceived);
            // _messageServer.SentTo.Register(NetCode.GuidNotification, ServerOnGuidNotifcationSent);
            // _messageServer.Sent.Register(NetCode.UpdateUsername, ServerOnUpdateUsernameSent);
            if (maxRequests <= 0)
            {
                _messageServer.Start();
            }
            else
            {
                _messageServer.Start(maxRequests);
            }
        }
コード例 #2
0
        private static void Main(string[] args)
        {
            Console.Title = "GFFServer";


            ConsoleHelper.WriteLine("正在初始化消息服务器...", ConsoleColor.Green);
            messageServer                 = new MessageServer(count: 100);
            messageServer.OnAccepted     += Server_OnAccepted;
            messageServer.OnError        += Server_OnError;
            messageServer.OnDisconnected += Server_OnDisconnected;
            ConsoleHelper.WriteLine("消息服务器初始化完毕...", ConsoleColor.Green);

            ConsoleHelper.WriteLine("正在启动消息服务器...", ConsoleColor.Green);
            messageServer.Start();
            ConsoleHelper.WriteLine("消息服务器启动完毕...", ConsoleColor.Green);



            ConsoleHelper.WriteLine("正在初始化文件服务器...", ConsoleColor.DarkYellow);
            var filePort = ServerConfig.Instance().FilePort;

            fileServer = new SAEAMvcApplication(port: filePort);
            fileServer.SetDefault("File", "Test");
            ConsoleHelper.WriteLine("文件服务器初始化完毕...", ConsoleColor.DarkYellow);

            ConsoleHelper.WriteLine("正在启动文件服务器...", ConsoleColor.DarkYellow);
            fileServer.Start();
            ConsoleHelper.WriteLine("文件服务器初始化完毕,http://127.0.0.1:" + filePort + "/...", ConsoleColor.DarkYellow);



            ConsoleHelper.WriteLine("点击回车,结束服务");
            Console.ReadLine();
        }
コード例 #3
0
        /// <summary>
        /// Initialises the TCP Server
        /// </summary>
        /// <param name="port">Port listening to</param>
        /// <param name="timeout">Timeout in seconds</param>
        protected void InitializeTCPServer(int port, int timeout = 60)
        {
            _messageServerError = false;

            if (!MessageServerActive)
            {
                return;
            }

            _messageServer = new MessageServer(Utilities.CheckMinMax(port, 0, 65535));
            _messageServer.MessageReceived    += _messageServer_MessageReceived;
            _messageServer.ClientConnected    += _messageServer_ClientConnected;
            _messageServer.ClientDisconnected += _messageServer_ClientDisconnected;
            _messageServer.OnError            += _messageServer_OnError;
            _messageServer.Started            += _messageServer_Started;
            _messageServer.Stopped            += _messageServer_Stopped;
            _messageServer.AllowClientConnect += _messageServer_AllowClientConnect;
            _messageServer.ClientLogin        += _messageServer_ClientLogin;
            _messageServer.ClientTimeOut       = (ushort)Utilities.CheckMinMax(timeout, 5, 180); // 60 second timeout
            _messageServer.LoginRequird        = MessageServerLogin;
            _messageServer.Start();

            if (!Classes.ThreadManager.Exists("Service Message Server Manager"))
            {
                MessageServerManagementThread thread = new MessageServerManagementThread(this);
                Classes.ThreadManager.ThreadStart(thread, "Service Message Server Manager",
                                                  System.Threading.ThreadPriority.Lowest);
            }
        }
コード例 #4
0
ファイル: SocketServerTest.cs プロジェクト: treverson/prime
        public void Go(ServerContext sCtx, ClientContext cCtx)
        {
            _sCtx = sCtx;
            _cCtx = cCtx;

            var mr     = false;
            var server = new MessageServer(sCtx);

            sCtx.M.RegisterAsync <HelloRequest>(this, x =>
            {
                sCtx.M.Send(new HelloResponse(x));
            });

            cCtx.Messenger.RegisterAsync <HelloResponse>(this, x =>
            {
                cCtx.Logger.Log(x.Response + " " + x.ClientId);
                mr = true;
            });

            server.Start();

            SendAsClient(server, cCtx.Messenger, new HelloRequest());

            do
            {
                Thread.Sleep(1);
            } while (!mr);

            server.Stop();
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: tangjiands/SAEA
        private static void ServerInit()
        {
            ConsoleHelper.WriteLine("SAEA.Message服务器正在启动...");

            MessageServer server = new MessageServer(39654, 100, 100000, 30 * 60 * 1000);

            server.OnAccepted += Server_OnAccepted;

            server.OnError += Server_OnError;

            server.OnDisconnected += Server_OnDisconnected;

            server.Start();

            Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    ConsoleHelper.Title = "MessageServer ClientCounts: " + server.ClientCounts;

                    Thread.Sleep(1000);
                }
            }, TaskCreationOptions.LongRunning);

            ConsoleHelper.WriteLine("SAEA.Message服务器已就绪!");
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: wuyingyou/uniframework
        static void Main(string[] args)
        {
            Trace.Listeners.Add(new ConsoleTraceListener());

            // 启动服务器
            using (MessageServer server = new MessageServer()) {
                server.Port = 8088;
                server.Start();

                Console.WriteLine("Press enter key to exit...");
                Console.ReadLine();
                server.Stop();
            }
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: jsjxrj/GFF
 private static void Main(string[] args)
 {
     ConsoleHelper.WriteLine("正在初始化服务器...", ConsoleColor.Green);
     server                   = new MessageServer();
     server.OnAccepted       += Server_OnAccepted;
     server.OnErrored        += Server_OnErrored;
     server.OnServerReceived += Server_OnReceived;
     server.OnUnAccepted     += Server_OnUnAccepted;
     ConsoleHelper.WriteLine("服务器初始化完毕...", ConsoleColor.Green);
     ConsoleHelper.WriteLine("正在启动服务器...", ConsoleColor.Green);
     server.Start();
     ConsoleHelper.WriteLine("服务器启动完毕...", ConsoleColor.Green);
     ConsoleHelper.WriteLine("点击回车,结束服务");
     Console.ReadLine();
 }
コード例 #8
0
ファイル: Program.cs プロジェクト: 252378189/GFF
 private static void Main(string[] args)
 {
     ConsoleHelper.WriteLine("正在初始化服务器...", ConsoleColor.Green);
     server                 = new MessageServer();
     server.OnAccepted     += Server_OnAccepted;
     server.OnError        += Server_OnError;
     server.OnDisconnected += Server_OnDisconnected;
     mvcApplication         = new SAEAMvcApplication(port: ServerConfig.Instance().FilePort);
     ConsoleHelper.WriteLine("服务器初始化完毕...", ConsoleColor.Green);
     ConsoleHelper.WriteLine("正在启动服务器...", ConsoleColor.Green);
     server.Start();
     mvcApplication.Start();
     ConsoleHelper.WriteLine("服务器启动完毕...", ConsoleColor.Green);
     ConsoleHelper.WriteLine("点击回车,结束服务");
     Console.ReadLine();
 }
コード例 #9
0
        /// <summary>
        /// </summary>
        /// <param name="sender">
        /// </param>
        /// <param name="e">
        /// </param>
        protected void Application_Start(object sender, EventArgs e)
        {
            var            policyServer  = new PolicyServer("clientaccesspolicy.xml");
            IMessageServer messageServer = new MessageServer(
                IPAddress.Any,
                4530,
                new JsonMessageSerializer(new List <Type>()
            {
                typeof(WeatherMessage), typeof(SubscribeMessage)
            }));

            ThreadPool.QueueUserWorkItem((o) => { policyServer.Start(); });
            ThreadPool.QueueUserWorkItem((o) => { messageServer.Start(); });

            var weatherService = new WeatherService(messageServer);
        }
コード例 #10
0
        public void ConnectToUser(MessageTransfer.EndPoint serverEndPoint)
        {
            messageServer = new MessageServer();
            messageServer.MessageReceived += MessageServer_MessageReceived;
            messageServer.Start();

            messageClient.Connect(serverEndPoint.ToIPEndPoint());

            ReadyRequest readyRequest = new ReadyRequest
            {
                EndPoint   = messageServer.ListeningEndPoint,
                OperatorID = ID
            };

            messageClient.SendMessage(readyRequest);
        }
コード例 #11
0
        /// <summary>
        /// [implementation of IHostedService] Triggered when the application host is ready to start the service.
        /// StartAsync contains the logic to start the background task. StartAsync is called:
        /// - BEFORE The app's request processing pipeline is configured (Startup.Configure).
        /// - BEFORE The server is started and IApplicationLifetime.ApplicationStarted is triggered.
        /// </summary>
        /// <param name="cancellationToken">Indicates that the start process has been aborted</param>
        /// <returns>Task</returns>
        public Task StartAsync(CancellationToken cancellationToken)
        {
            if (_server != null && !_server.IsStarted)
            {
                if (_server.Start())
                {
                    _logger.LogInformation($"TcpServer STARTED. Now listening on: {_server.Endpoint.Address}:{_server.Endpoint.Port}");
                    _fileLogger.WriteProgramLog($"{DateTime.Now:yyyy-MM-dd HH:mm:ss} TcpServer STARTED. Now listening on: {_server.Endpoint.Address}:{_server.Endpoint.Port}");
                }
                else
                {
                    _logger.LogWarning("TcpServer failed to start");
                    _fileLogger.WriteProgramLog($"{DateTime.Now:yyyy-MM-dd HH:mm:ss} TcpServer failed to start");
                }
            }

            return(Task.CompletedTask);
        }
コード例 #12
0
ファイル: Program.cs プロジェクト: treverson/prime
        static void Main(string[] args)
        {
            var sCtx = new ServerContext("..//..//..//..//..//instance//prime-server.config");

            var logger = new ConsoleLogger()
            {
                IncludePreamble = true
            };

            sCtx.L = logger;

            logger.Log(": Operating system: " + Environment.OSVersion.Platform);
            logger.Log(": Current directory: " + Environment.CurrentDirectory);

            var server = new MessageServer(sCtx);

            server.Start();

            foreach (var i in server.TypeBinder.TypeCatalogue)
            {
                logger.Log(server.TypeBinder.TypeCatalogue.Get(i));
            }

            // Start message listener.
            var keysManager = new KeyManagerServer(sCtx);

            Task.Run(() => { keysManager.Run(); });
            logger.Log(": Server started");

            // Start UI.
            var uiTask = Task.Run(() =>
            {
                var process = RunUi();

                logger.Log($": Electron UI started ({process.Id}).");
                process.WaitForExit();
            });

            logger.Log(": UI started");
            logger.Log(": Waiting for all UI processes exit...");

            uiTask.Wait();
        }
コード例 #13
0
ファイル: Program.cs プロジェクト: avanlau/SAEA
        private static void ServerInit()
        {
            ConsoleHelper.WriteLine("SAEA.Message服务器正在启动...");

            MessageServer server = new MessageServer(100, 100000, 30 * 60 * 1000);

            server.OnDisconnected += Server_OnDisconnected;

            server.Start();

            Task.Run(() =>
            {
                while (true)
                {
                    ConsoleHelper.Title = "MessageServer ClientCounts: " + server.ClientCounts;

                    Thread.Sleep(1000);
                }
            });

            ConsoleHelper.WriteLine("SAEA.Message服务器已就绪!");
        }
コード例 #14
0
ファイル: AMFGateway.cs プロジェクト: saggelopoulos/AMFCore
        /// <summary>
        /// Initializes the module and prepares it to handle requests.
        /// </summary>
        public void Init()
        {
            //http://support.microsoft.com/kb/911816
            // Do this one time for each AppDomain.
            if (!_initialized)
            {
                lock (_objLock)
                {
                    if (!_initialized)
                    {
                        _initialized = true;
                    }
                }
            }

            AMFWebContext.Initialize();

            if (messageServer == null)
            {
                lock (_objLock)
                {
                    if (messageServer == null)
                    {
                        messageServer = new MessageServer();
                        try
                        {
                            messageServer.Init();
                            messageServer.Start();
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
            }
        }
コード例 #15
0
        public void Init(HttpApplication application)
        {
            Exception exception;
            object    obj2;

            if (!_initialized)
            {
                lock ((obj2 = _objLock))
                {
                    if (!_initialized)
                    {
                        try
                        {
                            new PermissionSet(PermissionState.Unrestricted).Demand();
                            this.WireAppDomain();
                        }
                        catch (SecurityException)
                        {
                        }
                        _initialized = true;
                    }
                }
            }
            application.BeginRequest += new EventHandler(this.application_BeginRequest);
            if (!FluorineConfiguration.Instance.FluorineSettings.Runtime.AsyncHandler)
            {
                application.PreRequestHandlerExecute += new EventHandler(this.application_PreRequestHandlerExecute);
            }
            else
            {
                application.AddOnPreRequestHandlerExecuteAsync(new BeginEventHandler(this.BeginPreRequestHandlerExecute), new EndEventHandler(this.EndPreRequestHandlerExecute));
            }
            application.AuthenticateRequest   += new EventHandler(this.application_AuthenticateRequest);
            application.ReleaseRequestState   += new EventHandler(this.application_ReleaseRequestState);
            application.PreSendRequestHeaders += new EventHandler(this.application_PreSendRequestHeaders);
            application.EndRequest            += new EventHandler(this.application_EndRequest);
            FluorineWebContext.Initialize();
            if (serviceBrowserRenderer == null)
            {
                lock ((obj2 = _objLock))
                {
                    if (serviceBrowserRenderer == null)
                    {
                        try
                        {
                            LogManager.GetLogger(typeof(FluorineGateway)).Info(__Res.GetString("ServiceBrowser_Aquire"));
                        }
                        catch
                        {
                        }
                        try
                        {
                            Type type = ObjectFactory.Locate("FluorineFx.ServiceBrowser.ServiceBrowserRenderer");
                            if (type != null)
                            {
                                serviceBrowserRenderer = Activator.CreateInstance(type) as IServiceBrowserRenderer;
                                if (serviceBrowserRenderer != null)
                                {
                                    try
                                    {
                                        LogManager.GetLogger(typeof(FluorineGateway)).Info(__Res.GetString("ServiceBrowser_Aquired"));
                                    }
                                    catch
                                    {
                                    }
                                }
                            }
                        }
                        catch (Exception exception2)
                        {
                            exception = exception2;
                            try
                            {
                                LogManager.GetLogger(typeof(FluorineGateway)).Fatal(__Res.GetString("ServiceBrowser_AquireFail"), exception);
                            }
                            catch
                            {
                            }
                        }
                    }
                }
            }
            if (messageServer == null)
            {
                lock ((obj2 = _objLock))
                {
                    if (messageServer == null)
                    {
                        try
                        {
                            ILog logger = LogManager.GetLogger(typeof(FluorineGateway));
                            logger.Info("************************************");
                            logger.Info(__Res.GetString("Fluorine_Start"));
                            logger.Info(__Res.GetString("Fluorine_Version", new object[] { Assembly.GetExecutingAssembly().GetName().Version }));
                            logger.Info("************************************");
                            logger.Info(__Res.GetString("MessageServer_Create"));
                        }
                        catch
                        {
                        }
                        messageServer = new MessageServer();
                        try
                        {
                            string configPath = Path.Combine(Path.Combine(HttpRuntime.AppDomainAppPath, "WEB-INF"), "flex");
                            messageServer.Init(configPath, serviceBrowserRenderer != null);
                            messageServer.Start();
                            try
                            {
                                LogManager.GetLogger(typeof(FluorineGateway)).Info(__Res.GetString("MessageServer_Started"));
                            }
                            catch
                            {
                            }
                            HttpContext.Current.Application["__@fluorinemessageserver"] = messageServer;
                        }
                        catch (Exception exception3)
                        {
                            exception = exception3;
                            try
                            {
                                LogManager.GetLogger(typeof(FluorineGateway)).Fatal(__Res.GetString("MessageServer_StartError"), exception);
                            }
                            catch
                            {
                            }
                        }
                    }
                }
            }
        }
コード例 #16
0
 public void Start()
 {
     messageServer.MessageReceived += ServerFunction;
     messageServer.Start();
 }
コード例 #17
0
        /// <summary>
        /// Initializes the module and prepares it to handle requests.
        /// </summary>
        /// <param name="application">An HttpApplication that provides access to the methods, properties, and events common to all application objects within an ASP.NET application.</param>
        public void Init(HttpApplication application)
        {
            //http://support.microsoft.com/kb/911816
            // Do this one time for each AppDomain.
            if (!_initialized)
            {
                lock (_objLock)
                {
                    if (!_initialized)
                    {
                        if (Log.IsInfoEnabled)
                        {
                            Log.Info("************************************");
                            Log.Info(__Res.GetString(__Res.Fluorine_Start));
                            Log.Info(__Res.GetString(__Res.Fluorine_Version, Assembly.GetExecutingAssembly().GetName().Version));
                            Log.Info(string.Format("Common language runtime version {0}", Environment.Version));
                            Log.Info("************************************");
                            Log.Info(__Res.GetString(__Res.MessageServer_Create));
                        }
                        try
                        {
                            // See if we're running in full trust
                            new PermissionSet(PermissionState.Unrestricted).Demand();
                            //LinkDemands and InheritenceDemands Occur at JIT Time
                            //http://blogs.msdn.com/shawnfa/archive/2006/01/11/511716.aspx
                            WireAppDomain();
                            RegisterObject();
                        }
                        catch (MethodAccessException) {}
                        catch (SecurityException) {}

                        FluorineWebContext.Initialize();

                        Log.Info(__Res.GetString(__Res.ServiceBrowser_Aquire));
                        try
                        {
                            Type type = ObjectFactory.Locate("FluorineFx.ServiceBrowser.ServiceBrowserRenderer");
                            if (type != null)
                            {
                                _serviceBrowserRenderer = Activator.CreateInstance(type) as IServiceBrowserRenderer;
                                if (_serviceBrowserRenderer != null)
                                {
                                    Log.Info(__Res.GetString(__Res.ServiceBrowser_Aquired));
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Log.Fatal(__Res.GetString(__Res.ServiceBrowser_AquireFail), ex);
                        }

                        try
                        {
                            _messageServer = new MessageServer();
                            string[] possibleConfigFolderPaths = new string[PossibleConfigFolderNames.Length];
                            for (int i = 0; i < PossibleConfigFolderNames.Length; i++)
                            {
                                string configPath = Path.Combine(HttpRuntime.AppDomainAppPath, PossibleConfigFolderNames[i]);
                                possibleConfigFolderPaths[i] = configPath;
                            }
                            _messageServer.Init(possibleConfigFolderPaths, _serviceBrowserRenderer != null);
                            _messageServer.Start();
                            Log.Info(__Res.GetString(__Res.MessageServer_Started));
                            HttpContext.Current.Application[FluorineMessageServerKey] = _messageServer;
                        }
                        catch (Exception ex)
                        {
                            Log.Fatal(__Res.GetString(__Res.MessageServer_StartError), ex);
                        }

                        _handlers.Add(new AmfRequestHandler(this));
                        _handlers.Add(new StreamingAmfRequestHandler(this));
                        _handlers.Add(new RtmptRequestHandler(this));
                        _handlers.Add(new JsonRpcRequestHandler(this));
                        _initialized = true;
                    }
                }
            }

            //Wire up the HttpApplication events.
            //
            //BeginRequest
            //AuthenticateRequest
            //AuthorizeRequest
            //ResolveRequestCache
            //A handler (a page corresponding to the request URL) is created at this point.
            //AcquireRequestState ** Session State **
            //PreRequestHandlerExecute
            //[The handler is executed.]
            //PostRequestHandlerExecute
            //ReleaseRequestState
            //Response filters, if any, filter the output.
            //UpdateRequestCache
            //EndRequest

            application.BeginRequest += ApplicationBeginRequest;
            if (!FluorineConfiguration.Instance.FluorineSettings.Runtime.AsyncHandler)
            {
                application.PreRequestHandlerExecute += ApplicationPreRequestHandlerExecute;
            }
            else
            {
                application.AddOnPreRequestHandlerExecuteAsync(BeginPreRequestHandlerExecute, EndPreRequestHandlerExecute);
            }

            application.AuthenticateRequest += ApplicationAuthenticateRequest;

            //This implementation hooks the ReleaseRequestState and PreSendRequestHeaders events to
            //figure out as late as possible if we should install the filter.
            //The Post Release Request State is the event most fitted for the task of adding a filter
            //Everything else is too soon or too late. At this point in the execution phase the entire
            //response content is created and the page has fully executed but still has a few modules to go through
            //from an ASP.NET perspective.  We filter the content here and all of the javascript renders correctly.
            //application.PostReleaseRequestState += new EventHandler(this.CompressContent);
            application.ReleaseRequestState   += ApplicationReleaseRequestState;
            application.PreSendRequestHeaders += ApplicationPreSendRequestHeaders;
            application.EndRequest            += ApplicationEndRequest;
        }
コード例 #18
0
        static void Main(string[] args)
        {
            ConsoleHelper.WriteLine("Message Test");

            ConsoleHelper.WriteLine("服务器正在启动...");

            MessageServer server = new MessageServer();

            server.Start();

            Task.Run(() =>
            {
                while (true)
                {
                    ConsoleHelper.Title = "MessageServer ClientCounts: " + server.ClientCounts;

                    Thread.Sleep(1000);
                }
            });

            ConsoleHelper.WriteLine("服务器就绪");

            //===============================================================

            MessageClient client = new MessageClient();

            client.OnChannelMessage += Client_OnChannelMessage;
            client.OnPrivateMessage += Client_OnPrivateMessage;

            ConsoleHelper.WriteLine("客户正在连接...");

            string channelName = "频道测试一";

            client.ConnectAsync((state) =>
            {
                ConsoleHelper.WriteLine("客户就绪");

                if (state == System.Net.Sockets.SocketError.Success)
                {
                    client.Login();
                    ConsoleHelper.WriteLine("客户登录成功");

                    client.Subscribe(channelName);
                    ConsoleHelper.WriteLine("客户订阅成功");

                    Task.Run(() =>
                    {
                        while (true)
                        {
                            client.SendChannelMsg(channelName, "hello!");

                            Thread.Sleep(60 * 1000);
                        }
                    });


                    ConsoleHelper.WriteLine("客户发送频道消息成功");
                }
            });


            //===============================================================



            ConsoleHelper.ReadLine();
            Console.WriteLine("单机连接测试...");
            List <MessageClient> slist = new List <MessageClient>();

            Task.Run(() =>
            {
                for (int i = 0; i < 50000; i++)
                {
                    var c = new MessageClient();
                    c.ConnectAsync((state) =>
                    {
                        slist.Add(c);
                    });
                    Thread.Sleep(1);
                    if (i > 1000)
                    {
                        Thread.Sleep(10);
                    }
                    if (i > 5000)
                    {
                        Thread.Sleep(100);
                    }
                    if (i > 10000)
                    {
                        Thread.Sleep(1000);
                    }
                }
                Console.WriteLine("单机5W连接就绪...");
            });



            //===============================================================



            ConsoleHelper.ReadLine();
            Console.WriteLine("开始订阅测试...");
            List <MessageClient> list = new List <MessageClient>();

            for (int i = 0; i < 100; i++)
            {
                var c = new MessageClient();
                if (i < 10)
                {
                    c.OnChannelMessage += Client_OnChannelMessage2;
                }
                c.ConnectAsync((state) =>
                {
                    c.Login();
                    c.Subscribe(channelName);
                    list.Add(c);
                });
                Thread.Sleep(10);
            }



            //===============================================================



            ConsoleHelper.ReadLine();
            Console.WriteLine("私信测试");

            var cc1 = new MessageClient();

            cc1.OnPrivateMessage += Client_OnPrivateMessage;

            var cc2 = new MessageClient();

            cc2.OnPrivateMessage += Client_OnPrivateMessage;

            cc1.ConnectAsync((state) =>
            {
                cc1.Login();

                Task.Run(() =>
                {
                    while (true)
                    {
                        if (cc2.Connected)
                        {
                            cc1.SendPrivateMsg(cc2.UserToken.ID, "你好呀,cc2!");
                        }
                        Thread.Sleep(1000);
                    }
                });

                cc1.Subscribe(channelName);

                list.Add(cc1);
            });


            cc2.ConnectAsync((state) =>
            {
                cc2.Login();

                Task.Run(() =>
                {
                    while (true)
                    {
                        if (cc1.Connected)
                        {
                            cc2.SendPrivateMsg(cc1.UserToken.ID, "你好呀,cc1!");
                        }
                        Thread.Sleep(1000);
                    }
                });

                cc2.Subscribe(channelName);

                list.Add(cc2);
            });



            //===============================================================



            ConsoleHelper.ReadLine();
            Console.WriteLine("群组测试");

            cc1.OnGroupMessage += Client_OnGroupMessage;
            cc2.OnGroupMessage += Client_OnGroupMessage;

            var groupName = "萌一号蠢";

            cc1.SendCreateGroup(groupName);
            cc2.SendAddMember(groupName);


            Task.Run(() =>
            {
                while (true)
                {
                    cc1.SendGroupMessage(groupName, "群主广播了!");
                    cc2.SendGroupMessage(groupName, "群主万岁!");
                    Thread.Sleep(100);
                }
            });



            //===============================================================



            ConsoleHelper.ReadLine();

            cc2.SendRemoveMember(groupName);
            cc1.SendRemoveGroup(groupName);
            client.Unsubscribe(channelName);


            Console.WriteLine("测试完成");
            ConsoleHelper.ReadLine();
        }
コード例 #19
0
 public void Start()
 {
     net_server.Start();
     Thread.Sleep(10);
 }
コード例 #20
0
ファイル: Program.cs プロジェクト: jsjxrj/GFF
        private static void Main(string[] args)
        {
            Thread serverThread = null;

            Console.WriteLine("是否启动服务器?Y/N");

            var result = Console.ReadLine().ToUpper();

            if (result != "N")
            {
                serverThread = new Thread(() =>
                {
                    ConsoleHelper.WriteLine("正在初始化服务器...", ConsoleColor.Green);
                    server             = new MessageServer();
                    server.OnAccepted += Server_OnAccepted;
                    server.OnErrored  += Server_OnErrored;
                    //server.OnReceived += Server_OnReceived;
                    server.OnUnAccepted += Server_OnUnAccepted;
                    ConsoleHelper.WriteLine("服务器初始化完毕...", ConsoleColor.Green);
                    ConsoleHelper.WriteLine("正在启动服务器...", ConsoleColor.Green);
                    server.Start();

                    ConsoleHelper.WriteLine("正在启动wsserver...");
                    WSServer wsserver = new WSServer();
                    var wsurl         = "ws://172.31.56.106:" + ServerConfig.Instance().WSPort;
                    wsserver.Start(wsurl);
                    ConsoleHelper.WriteLine("wsserver正在运行...");

                    ConsoleHelper.WriteLine("服务器启动完毕...", ConsoleColor.Green);
                });
                serverThread.Start();
                Console.Title = "GFFServer";
                Console.ReadLine();
                //return;
            }

            Console.Title = "GFFClient";

            ConsoleHelper.WriteLine("私信测试开始...");
            var client1 = new MessageClient(uid1);

            client1.OnMessage += Client_OnMessage;
            client1.OnLogined += Client1_OnLogined;
            client1.OnError   += Client_OnError;
            client1.ConnectAsync();

            Console.ReadLine();

            var client2 = new MessageClient(uid2);

            client2.OnMessage += Client_OnMessage;
            client2.OnError   += Client_OnError;
            client2.OnLogined += Client2_OnLogined;
            client2.ConnectAsync();
            Console.ReadLine();


            var channelID = "all";

            ConsoleHelper.WriteLine("频道信息测试开始...");

            var client3 = new MessageClient();

            client3.OnMessage += Client_OnMessage;
            client3.OnError   += Client_OnError;
            client3.OnLogined += Client3_OnLogined;
            client3.ConnectAsync();
            Console.ReadLine();


            ConsoleHelper.WriteLine("订阅端测试开始...");
            Parallel.For(0, 10000, (i) =>
            {
                var ss        = new MessageClient();
                ss.OnLogined += Ss_OnLogined;
                ss.ConnectAsync();
            });
            Console.ReadLine();
            ConsoleHelper.WriteLine("点击回车结束测试...");
            //
            Console.ReadLine();
            if (serverThread != null)
            {
                serverThread.Abort();
            }
        }