private static void SendMessage(WebSocketMessage message) { _socket.Send(JsonConvert.SerializeObject(message)); }
private static async Task ReceivedMessage(WebSocketMessage message) { dynamic value; try { value = JsonConvert.DeserializeObject(message.Value); } catch (Exception ex) { value = message.Value; } switch (message.Type) { case "EliteAPI": Log($"Connection established with EliteAPI v{value.Version}", VoiceAttackColor.Green); break; case "CatchupStart": Log($"Catching up on {value} events in this session", VoiceAttackColor.Gray); _hasCaughtUp = false; break; case "CatchupEnd": Log($"Caught up with previous events", VoiceAttackColor.Green); _hasCaughtUp = true; break; case "Cargo": case "Modules": case "Outfitting": case "Shipyard": case "Status": case "NavRoute": case "Market": case "Backpack": case "Event": try { var eventValue = JsonConvert.DeserializeObject <Event>(message.Value); SetVariables(eventValue.Variables, message.Type); if (_hasCaughtUp) { //Log($"Invoking ((EliteAPI.{eventValue.Name}))", VoiceAttackColor.Pink); var commandName = $"((EliteAPI.{eventValue.Name}))"; if (await _proxy.Commands.Exists(commandName)) { await _proxy.Commands.Invoke(commandName); } } } catch (Exception ex) { Log($"{ex.GetType().Name}: {ex.Message}"); } break; case "Bindings": // To convert an XML node contained in string xml into a JSON string List <Variable> bindings = BindingsProcessor.SetBindings(value); SetVariables(bindings, "Bindings"); break; } }