/// <summary>
        /// Connects the game network client to the specified address.
        /// </summary>
        /// <param name="address"></param>
        public void Connect(ConnectionAddress address)
        {
            if (Agent == null)
            {
                Agent = new NetworkAgent(NetworkAgentRoleEnum.Client, GameServerConfiguration.ApplicationID, address.Port);

                // Refresh event hooks
                Agent.OnConnected -= RaiseOnAgentConnectedEvent;
                Agent.OnDisconnected -= RaiseAgentOnDisconnectedEvent;
                Agent.OnDisconnecting -= RaiseAgentOnDisconnectingEvent;
                Agent.OnConnected += RaiseOnAgentConnectedEvent;
                Agent.OnDisconnected += RaiseAgentOnDisconnectedEvent;
                Agent.OnDisconnecting += RaiseAgentOnDisconnectingEvent;
            }
            else
            {
                Agent.Port = address.Port;
            }

            Agent.Connect(address.IPAddress);
        }
        private async void ConnectToServerAsync(object sender, JavascriptMethodEventArgs e)
        {
            AuthorizationTypeEnum response = AuthorizationTypeEnum.Unknown;
            ConnectionAddress serverAddress = new ConnectionAddress
            {
                IPAddress = e.Arguments[0],
                Port = (int)e.Arguments[1]
            };

            await TaskEx.Run(() =>
            {
                // Authorize with master server for the specified server.
                response = WebUtility.RequestClientAuthorization(
                    serverAddress.IPAddress, 
                    serverAddress.Port, 
                    WinterEngineService.ActiveUserProfile.UserName, 
                    WinterEngineService.ActiveUserProfile.ActiveAuthorizationTokenGUID);

                if (response == AuthorizationTypeEnum.Success)
                {
                    WinterEngineService.NetworkClient.Connect(serverAddress);
                }
            });

            if(response != AuthorizationTypeEnum.Success)
            {
                AsyncJavascriptCallback("ConnectToServer_Callback", (int)response);
            }
        }