コード例 #1
0
    /**
     * 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);
    }
コード例 #2
0
    /**
     * 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();
            }
        }
    }