예제 #1
0
        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);
        }
예제 #2
0
 public void Refresh()
 {
     context.Callbacks.Clear();
     context.ClearPropertyChangedHandlers();
     foreach (var target in state.Targets)
     {
         server.Broadcast(serializer.Serialize(target.Name, target.Value, context));
     }
 }