private void Connect(bool joinOnly, ResponseListener connectionListener) { if (Socket != null && Socket.State == State.Connecting) { if (connectionListener != null) connectionListener.OnError(new ServiceCommandError(0, "You have a connection request pending, please wait until it has finished")); return; } if (IsConnected()) { if (connectionListener != null) connectionListener.OnSuccess(null); return; } MConnectionListener = new ResponseListener ( loadEventArg => { var finalConnectionListener = new ResponseListener ( loadEventArg2 => { Connected = true; if (connectionListener != null) connectionListener.OnSuccess(loadEventArg2); }, serviceCommandError => { DisconnectFromWebApp(); if (connectionListener != null) connectionListener.OnError(serviceCommandError); } ); Service.ConnectToWebApp(this, joinOnly, finalConnectionListener); }, serviceCommandError => { if (Socket != null) DisconnectFromWebApp(); if (connectionListener != null) { if (serviceCommandError == null) serviceCommandError = new ServiceCommandError(0, "Unknown error connecting to web app"); connectionListener.OnError(serviceCommandError); } } ); if (Socket != null) { if (Socket.IsConnected()) MConnectionListener.OnSuccess(null); else Socket.Connect(); } else { //var uri = WebOstvServiceSocketClient.GetUri(Service); //Socket = new WebOstvServiceSocketClient(Service, uri); //Socket.Listener = mSocketListener; //Socket.Connect(); var uri = WebOstvServiceSocketClient.GetUri(Service); if (WebOstvServiceSocketClient.SocketCache.ContainsKey(uri.ToString())) { Socket = WebOstvServiceSocketClient.SocketCache[uri.ToString()]; if (mSocketListener != null) { Socket.Listener = mSocketListener; } if (Socket.IsConnected()) MConnectionListener.OnSuccess(null); else { Socket.Connect(); } //MConnectionListener.OnSuccess(null); } else { Socket = new WebOstvServiceSocketClient(Service, uri) { Listener = mSocketListener }; Socket.Connect(); WebOstvServiceSocketClient.SocketCache.Add(uri.ToString(), Socket); } } }
public override void Connect() { if (Socket == null) { var uri = WebOstvServiceSocketClient.GetUri(this); if (WebOstvServiceSocketClient.SocketCache.ContainsKey(uri.ToString())) { Socket = WebOstvServiceSocketClient.SocketCache[uri.ToString()]; } else { Socket = new WebOstvServiceSocketClient(this, uri) { Listener = new WebOstvServiceSocketClientListener(this, Listener) }; WebOstvServiceSocketClient.SocketCache.Add(uri.ToString(), socket); } } if (!IsConnected()) Socket.Connect(); }
public override void DisconnectFromWebApp() { Connected = false; MConnectionListener = null; if (AppToAppSubscription != null) { AppToAppSubscription.RemoveListeners(); AppToAppSubscription.Unsubscribe(); AppToAppSubscription = null; } if (Socket == null) return; Socket.Listener = null; Socket.Disconnect(); Socket = null; }