private void ExecuteThread() { _socket.ExecuteThread(); //Reconnect on failure. if (_connectionAborted && _reconnectionAttempts <= RECONNECTION_ATTEMPTS) { L.E("SocketIO: Connection Aborted!"); _reconnectionAttempts++; _connectionAborted = false; //Must close the Socket before we try to connect again. try { _socket.ClearHandlers(); _socket.PrepareClose(); _socket.Close(); } catch (Exception e) { L.Ex(e); } _socket = null; L.D("SocketIO: Attempt #" + _reconnectionAttempts + " to reconnect to Machinations."); ConnectToMachinations(3); } }
/// <summary> /// Initializes the Socket IO component. /// <param name="socketURL">The URL where the Machinations API resides.</param> /// <param name="userKey">User Key (API key) to use when connecting to the back-end.</param> /// <param name="diagramToken">Diagram Token to make requests to.</param> /// </summary> public void InitSocket(string socketURL = "", string userKey = "", string diagramToken = "") { //Apply new URL if needed. if (socketURL != "") { _socketURL = socketURL; } if (userKey != "") { _userKey = userKey; } if (diagramToken != "") { _diagramToken = diagramToken; } //Close socket. if (_socket != null) { _socket.PrepareClose(); _socket.Close(); _socket = null; } _socket = new SocketIOGlobal(); _socket.autoConnect = false; L.D("Instantiated SocketIO with Hash: " + _socket.GetHashCode() + " for URL: " + _socketURL); _socket.url = _socketURL; SocketIOComponent.MaxRetryCountForConnect = 1; //Setup socket. _socket.SetUserKey(_userKey); try { _socket.CreateSocket(); } catch (Exception ex) { L.Ex(ex); } _socket.On(SyncMsgs.RECEIVE_AUTH_SUCCESS, OnAuthSuccess); _socket.On(SyncMsgs.RECEIVE_AUTH_DENY, OnAuthDeny); _socket.On(SyncMsgs.RECEIVE_OPEN, OnSocketOpen); _socket.On(SyncMsgs.RECEIVE_OPEN_START, OnSocketOpenStart); _socket.On(SyncMsgs.RECEIVE_GAME_INIT, OnGameInitResponse); _socket.On(SyncMsgs.RECEIVE_DIAGRAM_ELEMENTS_UPDATED, OnDiagramElementsUpdated); _socket.On(SyncMsgs.RECEIVE_ERROR, OnSocketError); _socket.On(SyncMsgs.RECEIVE_API_ERROR, OnSocketError); _socket.On(SyncMsgs.RECEIVE_CLOSE, OnSocketClose); _socket.On(SyncMsgs.RECEIVE_GAME_UPDATE_DIAGRAM_ELEMENTS, OnGameUpdateDiagramElementsRequest); try { L.D("SocketIO: Connect Start."); _socket.Connect(); L.D("SocketIO: Connect End."); } catch (Exception ex) { L.Ex(ex); } }