public override object OnClientConnected(Server server, WebSocket websocket) { SendOptions(websocket); var renderRoot = new RenderRoot(); var serializerContext = new RendererContext(); var state = new ClientState(renderRoot, serializerContext); void Refresh(object o, System.ComponentModel.PropertyChangedEventArgs args) { serializerContext.Callbacks.Clear(); serializerContext.ClearPropertyChangedHandlers(); foreach (var target in renderRoot.Targets) { var message = serializer.Serialize(target.Name, target.Value, state.serializerContext); Task.Run(() => websocket.SendAsync(message, WebSocketMessageType.Text, true, default)); } }; serializerContext.onPropertyChanged = Refresh; SetContext(server, state.State, websocket); onClientConnected(); Refresh(null, null); ResetContext(); return(state); }
public void Refresh() { context.Callbacks.Clear(); context.ClearPropertyChangedHandlers(); foreach (var target in state.Targets) { server.Broadcast(serializer.Serialize(target.Name, target.Value, context)); } }