示例#1
0
        public IEnumerator Connect(Action onSucessAction = null, Action onErrorAction = null)
        {
            if (socket != null && (socket.IsAlive || isConnecting))
            {
                yield break;
            }

            isConnecting = true;
            socket       = new WebSocketSharp.WebSocket(url.ToString());
            socket.AddRequestHeader(XAuthTokenHeaderKey, loginToken);
            socket.OnMessage += (sender, e) => messages.Enqueue(e.RawData);
            socket.OnOpen    += (sender, e) =>
            {
                isConnecting = false;
                Debug.Log("Opened WebSocket connection");
                isConnected = true;
                if (onSucessAction != null)
                {
                    TaskManager.Instance.RunOnMainThread(onSucessAction);
                }
            };
            socket.OnError += (sender, e) =>
            {
                isConnecting = false;
                Debug.LogError("WebSocket: " + e.Message);
                error = e.Message;
                if (onErrorAction != null)
                {
                    TaskManager.Instance.RunOnMainThread(onErrorAction);
                }
            };
            socket.ConnectAsync();

            while (!isConnected && error == null)
            {
                yield return(0);
            }
        }