private async void ConnectBtn_OnClick(object sender, RoutedEventArgs e) { //Get values of the login and server from WPF UI _dacsUser = DACSUserTxt.Text.Trim(); _dacsPosition = DACSPosition.Text.Trim(); _appId = AppIdTxt.Text.Trim(); var endpointServer = WebsocketEndpointTxt.Text.Trim(); /// if (!_isConnected && !_isWait) { IsConnected(false, true, "Cancel"); await Task.Run(async() => { _websocketClient = new WebsocketConnectionClient("client1", new Uri(endpointServer), "tr_json2") { Cts = new CancellationTokenSource() }; _mrnManager = new MrnStoryManager(_websocketClient); _mrnManager.ErrorEvent += ProcessMrnErrorEvent; _mrnManager.StatusEvent += ProcessMrnStatusEvent; _mrnManager.MessageEvent += ProcessMrnMessageEvent; _mrnManager.LoginMessageEvent += ProcessLoginMessageEvent; _websocketClient.ConnectionEvent += ProcessConnectionEvent; _websocketClient.ErrorEvent += ProcessWebSocketErrorEvent; await _websocketClient.Run().ConfigureAwait(false); }).ConfigureAwait(false); } else if (_isConnected && !_isWait) { _websocketClient.Stop = true; _websocketClient.Cts.Cancel(); IsConnected(false, false, "Connect"); } else if (!_isConnected && _isWait) { _websocketClient.Stop = true; _websocketClient.Cts.Cancel(); IsConnected(false, false, "Connect"); } }
static void Main(string[] args) { Console.WriteLine("Starting MRN Websocket Consumer app. Press Ctrl+C to exit.\n"); var websocket = new WebsocketConnectionClient(Clientname, WebsocketUri, "tr_json2"); websocket.Cts = new CancellationTokenSource(); var mrnmanager = new MrnStoryManager(websocket); mrnmanager.MRN_STREAM_ID = 3; mrnmanager.MessageEvent += (sender, e) => { Console.WriteLine("******************* Process MRN Message Events **********************"); Console.WriteLine($"TimeStamp:{e.TimeStamp}"); Console.WriteLine($"Received {e.Data.MsgType} {e.TimeStamp}\n"); Console.WriteLine($"Active Date:{e.Data.ACTIV_DATE}"); Console.WriteLine($"MRN_TYPE:{e.Data.MRN_TYPE}"); Console.WriteLine($"Context ID:{e.Data.CONTEXT_ID}"); Console.WriteLine($"Prod Perm:{e.Data.PROD_PERM}"); Console.WriteLine($"Fragment Count={e.Data.FRAG_NUM} Total Size={e.Data.TOT_SIZE} bytes"); if (e.Data.Story != null) { Console.WriteLine(e.Data.Story.ToJson()); } Console.WriteLine("*********************************************************************"); Console.WriteLine(); }; mrnmanager.ErrorEvent += (sender, e) => { Console.WriteLine("******************* Process MRN Error Events **********************"); Console.WriteLine($"TimeStamp:{e.TimeStamp}"); Console.WriteLine($"{e.ErrorMessage}"); Console.WriteLine("*********************************************************************"); Console.WriteLine(); }; mrnmanager.StatusEvent += (sender, e) => { Console.WriteLine("******************* Process MRN Status Events **********************"); Console.WriteLine($"Received {e.Status.MsgType} {e.TimeStamp}"); Console.WriteLine($"Stream State:{e.Status.State.Stream}"); Console.WriteLine($"Data State:{e.Status.State.Data}"); Console.WriteLine($"State Code:{e.Status.State.Code}"); Console.WriteLine($"Status Text:{e.Status.State.Text}"); Console.WriteLine("*********************************************************************"); Console.WriteLine(); }; mrnmanager.LoginMessageEvent += (sender, e) => { Console.WriteLine("******************* Process Login Message Events **********************"); Console.WriteLine($"{e.TimeStamp} received {e.Message.MsgType}"); switch (e.Message.MsgType) { case MessageTypeEnum.Refresh: { var message = (RefreshMessage)e.Message; Console.WriteLine($"Login name:{message.Key.Name.FirstOrDefault()}"); Console.WriteLine( $"Login Refresh stream:{message.State.Stream} state:{message.State.Data} code:{message.State.Code} status text:{message.State.Text}"); } break; case MessageTypeEnum.Status: { var message = (StatusMessage)e.Message; Console.WriteLine($"Login name:{message.Key.Name.FirstOrDefault()}"); Console.WriteLine( $"Login Status stream:{message.State.Stream} state:{message.State.Data} code:{message.State.Code} status text:{message.State.Text}"); if (message.State.Stream == StreamStateEnum.Closed || message.State.Stream == StreamStateEnum.ClosedRecover) { b_cancel = true; } } break; } Console.WriteLine("*********************************************************************"); Console.WriteLine(); }; websocket.ErrorEvent += (sender, e) => { Console.WriteLine("******************* Process Websocket Error Events **********************"); Console.WriteLine($"OnConnectionError {e.TimeStamp} {e.ClientWebSocketState} {e.ErrorDetails}"); Console.WriteLine("*********************************************************************"); Console.WriteLine(); }; websocket.ConnectionEvent += (sender, e) => { Console.WriteLine("******************* Process Websocket Connection Events **********************"); Console.WriteLine($"OnConnection Event Received:{MarketDataUtils.TimeStampToString(e.TimeStamp)}"); Console.WriteLine($"Connection State:{e.State}"); Console.WriteLine($"Message:{e.StatusText}"); if (e.State == WebSocketState.Open) { mrnmanager.SendLogin(DACS_User, Login_Position, AppId, 1).GetAwaiter().GetResult(); } Console.WriteLine("*********************************************************************"); Console.WriteLine(); }; Console.CancelKeyPress += (sender, e) => { websocket.Stop = true; b_cancel = true; }; websocket.Run().GetAwaiter().GetResult(); while (!b_cancel) { ; } Console.WriteLine("Quit the app"); }