/** * Uploads the received message object to firebase, * into a dedicated "Chat" folder, generating a uniqe timeStamp id for it; * @param receivedUserMessage - message object that will be uploaded to Firebase */ public static async void uploadMessage(ChatMessageForUpload receivedUserMessage) { long currentTime = DateTimeOffset.Now.ToUnixTimeMilliseconds(); string messageID = currentTime.ToString(); await firebaseClient.Child("Chat") .Child(messageID) .PutAsync(receivedUserMessage); }
/** * Decodes the received data from the client, and acts accordingly to its content; * Identifies the requests and runs the code further * @param ar - gets the status of the current async operation, along with the data */ public static void ReadCallback(IAsyncResult ar) { String content = String.Empty; StateObject state = (StateObject)ar.AsyncState; Socket handler = state.workSocket; int bytesRead = handler.EndReceive(ar); if (bytesRead > 0) { state.sb.Append(Encoding.ASCII.GetString( state.buffer, 0, bytesRead)); content = state.sb.ToString(); JObject json = JObject.Parse(content); string eventNameReceived = json["eventName"].Value <string>(); if (eventNameReceived.Equals("Register")) { UserData receivedUserRegister = JsonConvert.DeserializeObject <UserData>(content); checkIfUserExists(handler, receivedUserRegister); } if (eventNameReceived.Equals("Login")) { UserLoginData receivedUserLogin = JsonConvert.DeserializeObject <UserLoginData>(content); attemptUserLogin(handler, receivedUserLogin); } if (eventNameReceived.Equals("Get_Messages")) { string messageJSON = JsonConvert.SerializeObject(allMessagesList, Formatting.Indented); Send(handler, messageJSON); } if (eventNameReceived.Equals("Send_Message")) { ChatMessage receivedUserMessage = JsonConvert.DeserializeObject <ChatMessage>(content); ChatMessageForUpload convertedUserMessage = new ChatMessageForUpload { userName = receivedUserMessage.userName, userMessage = receivedUserMessage.userMessage }; uploadMessage(convertedUserMessage); } if (eventNameReceived.Equals("Delete_Message")) { ChatMessage receivedDeleteMessage = JsonConvert.DeserializeObject <ChatMessage>(content); deleteMessage(receivedDeleteMessage); } if (eventNameReceived.Equals("Disconnect")) { handler.Shutdown(SocketShutdown.Both); handler.Close(); } } }