/// <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); } }
private void OnSocketError(SocketIOEvent e) { L.D("[SocketIO::" + _socket?.GetHashCode() + "] !!!! Error received: " + e?.name + " DATA: " + e?.data + " "); HandleConnectionFailure(true); }