示例#1
0
 public void Start()
 {
     _socketServer.Start(20310);
     _storageSaver.Start();
     Running = true;
     OnMessageRecived?.Invoke("Server started");
 }
示例#2
0
 public void Stop()
 {
     _socketServer.Stop();
     _ahemClientManager.Dispose();
     _storageSaver.Stop();
     Running = false;
     OnMessageRecived?.Invoke("Server stopped");
 }
        private void SocketServer_OnClientDataRecived(ClientSocket client, string msg)
        {
            OnMessageRecived?.Invoke(string.Format("SocketServer_OnClientDataRecived {0}", msg));
            JObject jObject = JObject.Parse(msg);

            PacketType packetType = (PacketType)Enum.Parse(typeof(PacketType), jObject.ToObject <Packet>().PacketType);

            if (packetType == PacketType.ClientConnected)
            {
                if (!ChatClientManager.ReadOnlyChatClients.ContainsKey(client.IPAddress))
                {
                    ChatClient chatClient = ChatClientManager.AddClient(client, jObject.ToObject <ClientConnected>());
                    OnMessageRecived?.Invoke(string.Format("Client {0} authenticized", client.IPAddress.ToString()));
                    OnClientConnected?.Invoke(chatClient);
                }
                else
                {
                    OnErrMessageRecived?.Invoke(string.Format("Client {0} trying authenticize mulitiple times!", client.IPAddress.ToString()));
                }

                return;
            }

            if (ChatClientManager.ReadOnlyChatClients.ContainsKey(client.IPAddress) == false)
            {
                OnErrMessageRecived?.Invoke(string.Format("Unauthenticized or Disposed client {0} trying send data!", client.IPAddress.ToString()));
                return;
            }

            ChatClient indexedClient = ChatClientManager.ReadOnlyChatClients[client.IPAddress];

            switch (packetType)
            {
            case PacketType.ClientDisConnect:
                if (SocketServer.ClientSockets.ContainsKey(client.IPAddress))
                {
                    indexedClient.ClientSocket.Dispose();
                    OnMessageRecived?.Invoke(string.Format("client {0} disposed", client.IPAddress.ToString()));
                }
                break;

            case PacketType.Message:
                indexedClient.OnRootMessageRecived(jObject.ToObject <Message>());
                OnMessageRecived?.Invoke(string.Format("Message recived from client {0}", client.IPAddress.ToString()));
                OnClientDataRecived?.Invoke(indexedClient, jObject);
                break;

            case PacketType.GPS:
                indexedClient.GPSdata = new GPSdata(jObject.ToObject <GPS>().GPSdata);
                OnMessageRecived?.Invoke(string.Format("GPS value recived from client {0}", client.IPAddress.ToString()));
                OnClientDataRecived?.Invoke(indexedClient, jObject);
                break;

            default:
                OnErrMessageRecived?.Invoke(string.Format("Unidentified packet {0} recived from client {1}", ((int)packetType).ToString(), client.IPAddress.ToString()));
                break;
            }
        }
示例#4
0
 public void StartReading()
 {
     //wrap with try and catch
     new Task(() =>
     {
         while (Connection)
         {
             string res = m_reader.ReadString();
             if (res != null)
             {
                 OnMessageRecived?.Invoke(this, res);
             }
         }
     }).Start();
 }
示例#5
0
        private void SocketServer_OnClientByteStreamDataRecived(ClientSocket client, byte[] content)
        {
            OnMessageRecived?.Invoke($"SocketServer_OnClientByteStreamDataRecived Length:{content.Length}");
            if (_ahemClientManager.ReadOnlyAhemClients.TryGetValue(client.IPAddress, out AhemClient indexedClient) == false)
            {
                OnErrMessageRecived?.Invoke($"Unauthenticized or Disposed client {client.IPAddress} trying send data!");
                return;
            }

            AhemClient ahemClient = _ahemClientManager.ClientStreamDequeue(client, content);

            if (ahemClient != null)
            {
                OnClientStreamRecived?.Invoke(ahemClient, content);
            }
        }
示例#6
0
        private void StartListening()
        {
            _isListening     = true;
            _listeningThread = new Thread(() =>
            {
                while (_isListening)
                {
                    byte[] data    = new byte[256];
                    Int32 bytes    = _stream.Read(data, 0, data.Length);
                    string message = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
                    OnMessageRecived?.Invoke(message);
                }
            });

            _listeningThread.Start();
        }
示例#7
0
        public Client()
        {
            _client = new CommClient()
            {
                Configuration =
                {
                    Ssl                        = false,
                    CheckCertificateRevocation = false,
                    RequireClientCertificate   = false
                }
            };

            _client.Configuration.Protocol = new ProtocolHandler(_client, (m) =>
            {
                OnMessageRecived?.Invoke(m);
            });
        }
 public void StartReading()
 {
     //wrap with try and catch
     try
     {
         new Task(() =>
         {
             while (m_client.Connected)
             {
                 string res = m_reader.ReadString();
                 if (res != null)
                 {
                     OnMessageRecived?.Invoke(this, res);
                 }
                 else
                 {
                     Debug.Write("hii prob");
                 }
             }
         }).Start();
     }
     catch { };
 }
 private void SocketServer_OnClientConnected(ClientSocket client)
 {
     OnMessageRecived?.Invoke(string.Format("SocketServer_OnClientConnected {0}", client.IPAddress.ToString()));
 }
 private void SocketServer_OnMessageRecived(string msg) => OnMessageRecived?.Invoke(msg);
 public void Stop()
 {
     SocketServer.Stop();
     ChatClientManager.Dispose();
     OnMessageRecived?.Invoke("Server stopped");
 }
 public void Start()
 {
     SocketServer.Start(20310);
     OnMessageRecived?.Invoke("Server started");
 }
示例#13
0
 private void SocketListener_AsyncOnMessageRecived(string msg) =>
 ActionsConcurrentQueue.Enqueue(() => OnMessageRecived?.Invoke(msg));
示例#14
0
 public void SendMessage(Hashtable parameters)
 {
     OnMessageRecived?.Invoke(parameters);
 }
示例#15
0
        private void SocketServer_OnClientJsonDataRecived(ClientSocket client, string msg)
        {
            OnMessageRecived?.Invoke($"SocketServer_OnClientDataRecived {msg}");
            JObject jObject = JObject.Parse(msg);

            //Model.PacketType packetType = (Model.PacketType)Enum.Parse(typeof(Model.PacketType), jObject.ToObject<Packet>().PacketType);
            Model.PacketType packetType = jObject.ToObject <Packet>().PacketType;

            if (packetType == Model.PacketType.ClientConnected)
            {
                if (!_ahemClientManager.ReadOnlyAhemClients.ContainsKey(client.IPAddress))
                {
                    ClientConnected clientConnected = jObject.ToObject <ClientConnected>();
                    AhemClient      chatClient      = _ahemClientManager.AddClient(client, clientConnected);
                    OnMessageRecived?.Invoke($"Client {client.IPAddress} authenticized");
                    OnClientConnected?.Invoke(chatClient);
                    OnClientPacketRecived?.Invoke(chatClient, clientConnected);
                }
                else
                {
                    OnErrMessageRecived?.Invoke($"Client {client.IPAddress} trying authenticize mulitiple times!");
                }

                return;
            }

            AhemClient indexedClient;

            if (_ahemClientManager.ReadOnlyAhemClients.TryGetValue(client.IPAddress, out indexedClient) == false)
            {
                OnErrMessageRecived?.Invoke($"Unauthenticized or Disposed client {client.IPAddress} trying send data!");
                return;
            }

            switch (packetType)
            {
            case Model.PacketType.ClientDisConnect:
                if (_socketServer.ClientSockets.ContainsKey(client.IPAddress))
                {
                    indexedClient.ClientSocket.Dispose();
                    OnMessageRecived?.Invoke($"client {client.IPAddress} disposed");
                    OnClientPacketRecived?.Invoke(indexedClient, jObject.ToObject <ClientDisConnect>());
                }
                break;

            case Model.PacketType.UploadDocument:
                _ahemStorage.TryAddDoc(jObject.ToObject <UploadDocument>().Doc);
                break;

            case Model.PacketType.RemoveDocument:
                RemoveDocument removeDocument = jObject.ToObject <RemoveDocument>();
                _ahemStorage.RemoveDoc(removeDocument.Theme, indexedClient?.User.Id, removeDocument.DocName);
                break;

            case Model.PacketType.UploadPrivateDocument:
                UploadPrivateDocument uploadPrivateDocument = jObject.ToObject <UploadPrivateDocument>();
                _ahemStorage.TryAddPrivateDoc(uploadPrivateDocument.Doc);
                break;

            case Model.PacketType.RemovePrivateDocument:
                RemovePrivateDocument removePrivateDocument = jObject.ToObject <RemovePrivateDocument>();
                _ahemStorage.RemovePrivateDoc(indexedClient.User.Id, removePrivateDocument.DocName);
                break;

            case Model.PacketType.Like:
                Like like = jObject.ToObject <Like>();
                _ahemStorage.TryLike(like.Theme, like.DocName);
                break;

            case Model.PacketType.Unlike:
                UnLike unlike = jObject.ToObject <UnLike>();
                _ahemStorage.TryUnlike(unlike.Theme, unlike.DocName);
                break;

            case Model.PacketType.Follow:
                Follow follow = jObject.ToObject <Follow>();
                _ahemStorage.AddFollower(follow.Target.Id, indexedClient.User.Id);
                break;

            case Model.PacketType.UnFollow:
                UnFollow unFollow = jObject.ToObject <UnFollow>();
                _ahemStorage.RemoveFollower(unFollow.Target.Id, indexedClient.User.Id);
                break;

            case Model.PacketType.ReqPageData:
                ReqPageData         reqPageData     = jObject.ToObject <ReqPageData>();
                List <DocThumbnail> publicDocThumbs = _ahemStorage.GetPublicDocThumb(reqPageData.Theme, reqPageData.StartIndex, reqPageData.Count, reqPageData.DocOrder);
                indexedClient.SendData(new PageData(publicDocThumbs));
                break;

            case Model.PacketType.ReqPrivatePageData:
                ReqPrivatePageData  reqPrivatePageData = jObject.ToObject <ReqPrivatePageData>();
                List <DocThumbnail> privateDocThumbs   = _ahemStorage.GetPrivateDocThumb(indexedClient.User.Id, reqPrivatePageData.StartIndex, reqPrivatePageData.Count);
                indexedClient.SendData(new PrivatePageData(privateDocThumbs));
                break;

            case Model.PacketType.ReqDoc:
                ReqDoc reqDoc = jObject.ToObject <ReqDoc>();
                indexedClient.SendData(new PDoc(_ahemStorage.GetUserDoc(reqDoc.Author.Id, reqDoc.DocName)));
                break;

            case Model.PacketType.ReqThemes:
                indexedClient.SendData(new Themes(_ahemStorage.GetTheme()));
                break;

            case Model.PacketType.StreamHeader:
                switch (jObject.ToObject <StreamHeader>().StreamPacketType)
                {
                case StreamPacketType.Image:
                    ImageStream imageStream = jObject.ToObject <ImageStream>();
                    _ahemClientManager.ClientStreamEnqueue(client, jObject.ToObject <ImageStream>());
                    OnClientPacketRecived?.Invoke(indexedClient, imageStream);
                    break;

                default:
                    break;
                }
                break;

            default:
                OnErrMessageRecived?.Invoke($"Unidentified packet {(int)packetType} recived from client {client.IPAddress}");
                break;
            }
        }
示例#16
0
 private void SocketServer_OnClientConnected(ClientSocket client) => OnMessageRecived?.Invoke($"SocketServer_OnClientConnected {client.IPAddress}");