/// <summary>
        /// 创建网络频道。
        /// </summary>
        /// <param name="name">网络频道名称。</param>
        /// <param name="networkChannelHelper">网络频道辅助器。</param>
        /// <returns>要创建的网络频道。</returns>
        public IWebSocketChannel CreateWebSocketChannel(string name, IWebSocketChannelHelper networkChannelHelper)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new GameFrameworkException("Invalid Channel Name");
            }

            if (networkChannelHelper == null)
            {
                throw new GameFrameworkException("ChannelHelper Can not be null");
            }

            if (HasWebSocketChannel(name))
            {
                throw new GameFrameworkException("Already Exists Channel " + name);
            }

            WebSocketChannel ret = new WebSocketChannel(name, networkChannelHelper);

            ret.NetworkChannelConnected     += OnWebSocketChannelConnected;
            ret.NetworkChannelSended        += OnWebSocketChannelSended;
            ret.NetworkChannelClosed        += OnWebSocketChannelClosed;
            ret.NetworkChannelMissHeartBeat += OnWebSocketChannelMissHeartBeat;
            ret.NetworkChannelError         += OnWebSocketChannelError;

            m_WebSocketChannels.Add(name, ret);
            return(ret);
        }
Esempio n. 2
0
            /// <summary>
            /// 初始化自定义网络频道的新实例。
            /// </summary>
            /// <param name="name">网络频道名称。</param>
            /// <param name="networkChannelHelper">网络频道辅助器。</param>
            public WebSocketChannel(string name, IWebSocketChannelHelper networkChannelHelper)
            {
                m_Name = name ?? string.Empty;
                m_NetworkChannelHelper = networkChannelHelper;
                m_ResetHeartBeatElapseSecondsWhenReceivePacket = false;
                m_HeartBeatInterval     = DefaultHeartBeatInterval;
                m_Socket                = null;
                m_heartbeatTime         = 0f;
                m_missingHeartBeatCount = 0;
                m_Active                = false;
                m_Disposed              = false;

                NetworkChannelConnected     = null;
                NetworkChannelClosed        = null;
                NetworkChannelSended        = null;
                NetworkChannelMissHeartBeat = null;
                NetworkChannelError         = null;

                networkChannelHelper.Initialize(this);
            }