예제 #1
0
        protected override void OnStart(string[] args)
        {
            IReaderService readerService = new ReaderService();
            IWSListener    listener      = new WSListener(readerService);

            _watcher.LogEvent += m => listener.Log(m);
            _watcher.Start();
        }
예제 #2
0
        /// <summary>
        /// 创建监听器
        /// </summary>
        /// <param name="id">监听器标识</param>
        /// <param name="recvsize">接受缓冲区大小</param>
        /// <param name="protoType">协议类型</param>
        /// <param name="certificate">安全证书</param>
        /// <param name="sessionCreateHandler">创建session的委托</param>
        /// <returns>监听器</returns>
        public IListener CreateListener(uint id, int recvsize, ProtoType protoType, X509Certificate2 certificate, SessionCreater sessionCreateHandler)
        {
            if (NetworkMgr.instance.ContainsListener(id))
            {
                throw new System.Exception("session id already exists");
            }

            IListener listener = null;

            switch (protoType)
            {
            case ProtoType.TCP:
                if (certificate != null)
                {
                    TLSListener tlsListener;
                    listener = tlsListener = new TLSListener(id);
                    tlsListener.certificate = certificate;
                }
                else
                {
                    listener = new TCPListener(id);
                }
                break;

            case ProtoType.WebSocket:
                if (certificate != null)
                {
                    TLSListener tlsListener;
                    listener = tlsListener = new TLSWSListener(id);
                    tlsListener.certificate = certificate;
                }
                else
                {
                    listener = new WSListener(id);
                }
                break;

            case ProtoType.KCP:
                listener = new KCPListener(id);
                break;
            }
            if (listener == null)
            {
                return(null);
            }
            listener.sessionCreater = sessionCreateHandler;
            listener.recvBufSize    = recvsize;
            NetworkMgr.instance.AddListener(listener);
            return(listener);
        }