internal void AddVesselService(Vessel vessel)
 {
     DataUpdatesDetector.StartUp(vessel);
     wsServer.AddWebSocketService($"/{vessel.id.ToString()}", () => new WmcDataBehavior(vessel));
     VesselAdded(vessel.id.ToString(), new KeyValuePair <string, string>(vessel.GetDisplayName(),
                                                                         $"vesselsList_Type{vessel.vesselType.ToString()}"));
 }
        protected override void OnMessage(MessageEventArgs e)
        {
            var package = JSON.Parse(e.Data);

            switch (package["Type"].Value)
            {
            case "DataSubscription":
            {
                if (package["VarID"].AsInt == 0)
                {
                    break;
                }
                if (package["VarID"].AsInt > 0)
                {
                    if (!subscriptions.Contains(package["VarID"].AsInt))
                    {
                        DataUpdatesDetector.DataUpdatedEvents[vessel][(DataUpdatesDetector.DataID)package["VarID"].AsInt] += OnDataChanged;
                        subscriptions.Add(package["VarID"].AsInt);
                    }
                }
                else
                {
                    // ReSharper disable once DelegateSubtraction
                    DataUpdatesDetector.DataUpdatedEvents[vessel][(DataUpdatesDetector.DataID)(-package["VarID"].AsInt)] -= OnDataChanged;
                    subscriptions.Remove(-package["VarID"].AsInt);
                }

                break;
            }

            case "DataRequest":
            {
                var obj = new JSONObject();
                obj.Add("Type", new JSONString("Data"));
                obj.Add("VarID", new JSONNumber(package["VarID"].AsInt));
                obj.Add("Data", DataUpdatesDetector.GetData((DataUpdatesDetector.DataID)package["VarID"].AsInt, vessel));
                OnDataChanged(obj);
                break;
            }
            }
        }
 internal void StopVesselService(Vessel vessel)
 {
     VesselRemoved(vessel.id.ToString());
     wsServer.RemoveWebSocketService($"/{vessel.id}");
     DataUpdatesDetector.Stop(vessel);
 }