void StartWebSocket() { Debug.Log("Attempting to Connect"); ui.AttemptingConnection("Attempting to connect (" + (++connectionAttempts) + ")"); connecting = true; var ws = new WebSocket("ws://localhost:8765"); ws.EmitOnPing = true; ws.OnOpen += (object sender, EventArgs e) => { Debug.Log("Connected to Server"); socket = ws; socket_connected = true; connecting = false; connectionAttempts = 0; lock (messages) { RubiksMessage m = new RubiksMessage(); m.messageType = (int)MessageType.Connected; messages.Enqueue(m); } }; ws.OnError += (object sender, ErrorEventArgs e) => { Debug.Log(e.Message); }; ws.OnMessage += (object sender, MessageEventArgs e) => { lock (messages) { RubiksMessage m = JsonUtility.FromJson <RubiksMessage>(e.Data); messages.Enqueue(m); } Debug.Log(e.Data); }; ws.OnClose += (object sender, CloseEventArgs e) => { socket_connected = false; socket = null; connecting = false; Debug.Log("CLOSE: Code:" + e.Code + ", Reason:" + e.Reason); }; ws.ConnectAsync(); }
private void HandleServerMessage() { if (messages.Count > 0) { lock (messages) { while (messages.Count > 0) { RubiksMessage m = messages.Dequeue(); if (m.messageType == (int)MessageType.Reset) { Debug.Log("reseting"); initialized = false; ui.OnConnected(); } else if (m.messageType == (int)MessageType.Initialize) { Debug.Log("New Initialized"); SolutionString = m.Data; SolutionArr = ParseMoves(SolutionString); RCP.ResetView(); RCP.RC.RunCustomSequence(SubstringFromList(SolutionArr, true, 0)); nextMove = 0; RCP.RefreshPanels(); ui.OnInitialized(); initialized = true; //Reinitialize the cube } else if (m.messageType == (int)MessageType.Solution) { } else if (m.messageType == (int)MessageType.Connected) { ui.OnConnected(); ui.WaitMessage("Waiting for Cube"); } } } } }