/// <summary>
        /// Handler for 'connect' message from Socket Gamepad Manager
        /// Generates an AppHandshakeMsg with Controller Payloads
        /// if any and sends it to the server, as well as the default controller name
        /// </summary>
        /// <param name="e"></param>
        protected void HandleConnectedToSGServer(SocketIOEvent e)
        {
            string Payload        = string.Empty;
            string ControllerPath = Fyo.DefaultPaths.Controllers + ControllerPayload;

            if (File.Exists(ControllerPath))
            {
                Debug.LogWarning("Payload File \"" + ControllerPath + "\"");
                byte[] data = File.ReadAllBytes(ControllerPath);
                Payload = Convert.ToBase64String(data);
                Debug.LogWarning("Payload Data\"" + Payload + "\"");
            }
            else
            {
                Debug.LogWarning("No Payload, Path: \"" + ControllerPath + "\"");
            }

            AppHandshakeMsg GameInfoMsg = new AppHandshakeMsg(AppIdString, Payload, DefaultController);

            OnConnected();

            //Identify App to Node Server
            Debug.Log("Handshake Accepted, sending Game Info: " + GameInfoMsg.ToString());
            socket.Emit("AppHandshakeMsg", GameInfoMsg);
        }
        /// <summary>
        /// Handles AppHandshakeMsg response from server after AppHandshakeMsg is sent
        /// Acknowledgement of Handshake,
        /// TODO: otherwise a Disconnect message will be sent from the server?
        /// </summary>
        /// <param name="e"></param>
        protected void HandleAppHandshake(SocketIOEvent e)
        {
            AppHandshakeMsg handshakeMsg = new AppHandshakeMsg(e.data);

            OnHandshake(handshakeMsg);
            Debug.Log("Application Handshake Accepted");
        }
 /// <summary>
 /// Called after the Socket Gamepad Manager accepts Handshake
 /// </summary>
 /// <param name="handshakeMsg">Data sent from server for handshake acknowledgement, handshakeMsg.BinaryData may be developer defined payload(s)</param>
 protected abstract void OnHandshake(AppHandshakeMsg handshakeMsg);