using BsWidgetShareCodes; using Newtonsoft.Json; using System; using WebSocketSharp; namespace BsWidget.BsYurHttpStatus { internal class BsYurHttpStatusClient { private bool _isRunning; private WebSocket _webSocket; public event EventHandler Event; public void Start() { _isRunning = true; _webSocket = new WebSocket("ws://localhost:6558/socket"); _webSocket.OnMessage += WebSocket_OnMessage; _webSocket.OnClose += WebSocket_OnClose; _webSocket.OnError += WebSocket_OnError; _webSocket.ConnectAsync(); } public void Stop() { _isRunning = false; _webSocket.Close(); } private void WebSocket_OnError(object sender, ErrorEventArgs e) { if (_isRunning) _webSocket.Connect(); } private void WebSocket_OnClose(object sender, CloseEventArgs e) { if (_isRunning) _webSocket.Connect(); } private void WebSocket_OnMessage(object sender, MessageEventArgs e) { //parse json var evt = JsonConvert.DeserializeObject(e.Data); OnEvent(evt); } protected virtual void OnEvent(YurStatus e) => Event?.Invoke(this, e); } }