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); }