importclrclr.AddReference("cAlgo.API")fromcAlgo.APIimport*fromSystemimportUriclassTest():defon_start(self):webSocket=WebSocketClient()webSocket.Connected+=lambdaargs:print("Connected")webSocket.Disconnected+=lambdaargs:print("Disconnected")webSocket.TextReceived+=lambdaargs:print("Text Received: ",args.Text)webSocket.BinaryReceived+=lambdaargs:print("Binary Received: ",Encoding.UTF8.GetString(args.Data))panel=StackPanel()panel.BackgroundColor=Color.BlueVioletpanel.Orientation=Orientation.Verticalpanel.HorizontalAlignment=HorizontalAlignment.Centerpanel.VerticalAlignment=VerticalAlignment.CenterconnectButton=Button()connectButton.Text="Connect"# Host is a parameter of type string defined in C# file of cBotconnectButton.Click+=lambdaargs:webSocket.Connect(Uri(api.Host))disconnectButton=Button()disconnectButton.Text="Disconnect"disconnectButton.Click+=lambdaargs:webSocket.Close(WebSocketClientCloseStatus.Empty,None)disposeButton=Button()disposeButton.Text="Dispose"disposeButton.Click+=lambdaargs:self.dispose_client(webSocket)textBox=TextBox()textBox.Text="Type your message..."textBox.Width=100sendTextButton=Button()sendTextButton.Text="Send Text"sendTextButton.Click+=lambdaargs:webSocket.Send(textBox.Text)sendBinaryButton=Button()sendBinaryButton.Text="Send Binary"sendBinaryButton.Click+=lambdaargs:webSocket.Send(Encoding.UTF8.GetBytes(textBox.Text))panel.AddChild(connectButton)panel.AddChild(disconnectButton)panel.AddChild(disposeButton)panel.AddChild(textBox)panel.AddChild(sendTextButton)panel.AddChild(sendBinaryButton)api.Chart.AddControl(panel)defdispose_client(self,webSocketClient):webSocketClient.Dispose()print(f"WebSocket Disposed, state: {webSocketClient.State}")