Ejemplo n.º 1
0
        public void StartServer()
        {
            var userFiter = new SocketHandshake();

            userFiter.Register(new SocketServerBLL.UserConnectFilter());
            UserListen = SocketServerFactory.SocketServerManager(
                new OfflineMsgMemory(),
                userFiter,
                heartFreq: this.HeartInterval,
                retryNumber: this.RetryNumber,
                retyInterval: this.RetryInterval
                );
            UserListen.MessageFormatting = (msg) => msg + ";";
            UserListen.NotifyComplete   += (userID, result) =>
            {
                Log(string.Format("send {0} {1}", userID, result?"success":"failed"));
            };
            UserListen.Listen(this.UserListenIp, this.UserListenPort);
            Log(string.Format("user listen address {0}:{1}", UserListenIp, UserListenPort));

            if (!String.IsNullOrEmpty(this.AdminListenIp))
            {
                var adminFiter = new SocketHandshake();
                adminFiter.Register(new SocketServerBLL.AdminConnectFilter());
                AdminListen = SocketServerFactory.SocketAdminManager(UserListen, adminFiter);
                AdminListen.Listen(this.AdminListenIp, this.AdminListenPort);
                Log(string.Format("admin notify listen address {0}:{1}", AdminListenIp, AdminListenPort));
            }
            this.IsRun = true;
        }
Ejemplo n.º 2
0
        private static void Main(string[] args)
        {
            appServer = new MyAppServer();

            var root    = new RootConfig();
            var server  = new ServerConfig();
            var factory = new SocketServerFactory();

            server.Name                = "SuperWebSocket";
            server.ServerTypeName      = "WebSocketService";
            server.Ip                  = "Any";
            server.Port                = 3333;
            server.MaxRequestLength    = 1024 * 1000 * 1000;
            server.ReceiveBufferSize   = 1048576;
            server.MaxConnectionNumber = 100;
            server.SendingQueueSize    = 3000;
            server.TextEncoding        = "UTF-8";

            appServer.NewRequestReceived += appServer_NewRequestReceived;

            appServer.Setup(root, server, factory);

            appServer.Start();

            Console.WriteLine("...open another command prompt and run: telnet 127.0.0.1 3333");
            Console.ReadKey();
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            var userFiter = new SocketHandshake();

            userFiter.Register(new TestFilter());
            var manager = SocketServerFactory.SocketServerManager(
                new OfflineMsgMemory(),
                userFiter,
                heartFreq: 0,
                retryNumber: 3,
                retyInterval: 10000
                );

            manager.Listen("127.0.0.1", 3366);


            var adminFiter = new SocketHandshake();

            adminFiter.Register(new TestAdminFiter());
            SocketSpreader spreader = SocketServerFactory.SocketAdminManager(manager, adminFiter);

            spreader.Listen("127.0.0.1", 3365);


            while (true)
            {
                string msg = Console.ReadLine();
                if (msg.Equals("end"))
                {
                    manager.Dispose();
                    spreader.Dispose();
                    break;
                }
                else if (msg.StartsWith("send"))
                {
                    var temp = msg.Split(' ');
                    if (temp.Length < 3)
                    {
                        Console.WriteLine("参数错误");
                    }
                    else
                    {
                        manager.Notify(temp[2], temp[1]);
                    }
                }
                else
                {
                    manager.Notify(msg);
                }
            }
            Console.ReadKey();
            Main(null);
        }
Ejemplo n.º 4
0
        public bool Start(int port, string serverName, bool isUseCertificate = false, string serverStoreName = "", string serverSecurity = "", string serverThumbprint = "")
        {
            bool isSetuped = false;

            try
            {
                WebSocket = new WebSocketServer();
                var serverConfig = new ServerConfig
                {
                    Name = serverName,
                    MaxConnectionNumber = 10000,
                    Mode                     = SocketMode.Tcp,
                    Port                     = port,
                    ClearIdleSession         = false,
                    ClearIdleSessionInterval = 120,
                    ListenBacklog            = 10,
                    ReceiveBufferSize        = 64 * 1024,
                    SendBufferSize           = 64 * 1024,
                    KeepAliveInterval        = 1,
                    KeepAliveTime            = 60,
                    SyncSend                 = false
                };
                SocketServerFactory socketServerFactory = null;
                //开启wss 使用证书
                if (isUseCertificate)
                {
                    serverConfig.Security    = serverSecurity;
                    serverConfig.Certificate = new CertificateConfig
                    {
                        StoreName     = serverStoreName,
                        StoreLocation = System.Security.Cryptography.X509Certificates.StoreLocation.LocalMachine,
                        Thumbprint    = serverThumbprint
                    };
                    socketServerFactory = new SocketServerFactory();
                }
                WebSocket.Setup(new RootConfig(), serverConfig, socketServerFactory);
                WebSocket.NewSessionConnected += NewSessionConnected;
                WebSocket.NewMessageReceived  += NewMessageReceived;
                WebSocket.NewDataReceived     += NewDataReceived;
                WebSocket.SessionClosed       += SessionClosed;

                isSetuped = WebSocket.Start();

                if (isSetuped)
                {
                    _isRunning = true;
                }
            }
            catch
            { }
            return(isSetuped);
        }
Ejemplo n.º 5
0
        public bool Listen(UInt16 port = 0)
        {
            if (port == 0)
            {
                IPAddress ipAddress = WsRouterHelper.LocalIp();
                if (ipAddress == null)
                {
                    ipAddress = IPAddress.Loopback;
                }

                port = WsRouterHelper.FindUnusedPort(ipAddress, StartPort);
            }

            try
            {
                var r = new RootConfig();

                const int timeOutSeconds       = 60;
                const int timeOutMinutes       = 60;
                const int timeOutMultiplicator = 10;

                Port = port;

                // https://supersocket.codeplex.com/wikipage?title=SuperSocket%20Basic%20Configuration
                var s = new ServerConfig
                {
                    Name                     = "RailwayEssentialWebSocket",
                    Ip                       = IPAddress.Any.ToString(),
                    Port                     = port,
                    KeepAliveTime            = 60,
                    KeepAliveInterval        = 1,
                    ClearIdleSession         = false,
                    ClearIdleSessionInterval = 120,
                    IdleSessionTimeOut       = timeOutSeconds * timeOutMinutes * timeOutMultiplicator,
                    Mode                     = SocketMode.Tcp,
                    MaxRequestLength         = 4096 * 1024
                };

                var f = new SocketServerFactory();

                if (_webSocketServer != null)
                {
                    _webSocketServer.Stop();
                    _webSocketServer = null;
                }

                _webSocketServer = new WebSocketServer();
                _webSocketServer.Setup(r, s, f);

                _webSocketServer.NewSessionConnected += mWebSocketServer_NewSessionConnected;
                _webSocketServer.NewMessageReceived  += mWebSocketServer_NewMessageReceived;
                _webSocketServer.SessionClosed       += MWebSocketServerOnSessionClosed;

                return(_webSocketServer.Start());
            }
            catch (Exception ex)
            {
                ex.Show();

                return(false);
            }
        }