void BeginListeningServerEvents() { #if UNITY_WEBGL && !UNITY_EDITOR if (esGL != null) { return; } string url = this.ReferenceUrl; if (FirebaseAuth.Instance.IsSignedIn) { FirebaseAuth.Instance.GetAccessToken((accessToken) => { url = url + "?auth=" + accessToken; esGL = new FirebaseDatabase.FirebaseEventSourceWebGL(url, true, null, OnEventSourceMessageReceived, OnEventSourceError); }); } else { esGL = new FirebaseDatabase.FirebaseEventSourceWebGL(url, false, null, OnEventSourceMessageReceived, OnEventSourceError); } #else if (webReq != null) { return; } string url = this.ReferenceUrl; Action sendRequest = () => { webReq = new UnityWebRequest(url); webReq.SetRequestHeader("Accept", "text/event-stream"); webReq.SetRequestHeader("Cache-Control", "no-cache"); FirebaseServerEventsDownloadHandler downloadHandler = new FirebaseServerEventsDownloadHandler(); downloadHandler.DataReceived += OnDataReceived; webReq.downloadHandler = downloadHandler; webReq.disposeDownloadHandlerOnDispose = true; UnityWebRequestAsyncOperation webReqAO = webReq.SendWebRequest(); webReqAO.completed += ((ao) => OnStopListening(webReqAO)); }; if (FirebaseAuth.Instance.IsSignedIn) { FirebaseAuth.Instance.GetAccessToken(accessToken => { url = url + "?auth=" + accessToken; sendRequest(); }); } else { sendRequest(); } #endif }
void DisposedUnityWebRequestIfNoReferences() { if (valueChangedRefCount == 0 && childAddedRefCount == 0 && childChangedRefCount == 0 && childMovedRefCount == 0 && childRemovedRefCount == 0) { #if UNITY_WEBGL if (esGL != null) { esGL.Close(); esGL = null; } #else if (webReq != null) { webReq.Dispose(); webReq = null; } #endif } }