private void InitEvents() { _listener = new EventBasedNetListener(); _listener.NetworkReceiveEvent += (fromPeer, dataReader, deliveryMethod) => { _peer.HandleDataReceived(dataReader.GetRemainingBytes(), 0); dataReader.Recycle(); }; _listener.PeerConnectedEvent += (peer) => { Status = EConnectionStatus.Connected; var pe = new PeerLn(peer); pe.SetConnectedState(true); pe.MessageReceived += HandleMessage; _peer = pe; Peer = pe; Connected?.Invoke(); }; _listener.PeerDisconnectedEvent += (peer, disconnectInfo) => { if (Peer != null) { Peer.MessageReceived -= HandleMessage; } _peer?.SetConnectedState(false); Status = EConnectionStatus.Disconnected; Disconnected?.Invoke(); }; _netManager = new NetManager(_listener) { DisconnectTimeout = 300000 }; _netManager.Start(); }
/// <summary> /// Starts connecting to another socket /// </summary> /// <param name="ip"></param> /// <param name="port"></param> /// <param name="timeoutMillis"></param> /// <returns></returns> public IClientSocket Connect(string ip, int port, int timeoutMillis, string key = "") { _ip = ip; _port = port; _isConnected = false; Status = EConnectionStatus.Connecting; if (_peer != null) { _peer.MessageReceived -= HandleMessage; _peer.Dispose(); } _listener = new EventBasedNetListener(); _listener.NetworkReceiveEvent += (fromPeer, dataReader, deliveryMethod) => { _peer.HandleDataReceived(dataReader.GetRemainingBytes(), 0); dataReader.Recycle(); }; _listener.PeerConnectedEvent += (peer) => { _isConnected = false; var pe = new PeerLn(peer); pe.SetConnectedState(true); pe.MessageReceived += HandleMessage; _peer = pe; Peer = pe; Connected?.Invoke(); }; _listener.PeerDisconnectedEvent += (peer, disconnectInfo) => { _peer?.SetConnectedState(false); _isConnected = false; Disconnected?.Invoke(); }; _netManager = new NetManager(_listener) { DisconnectTimeout = 300000 }; _netManager.Start(); _netManager.Connect(_ip, _port, key); return(this); }