1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- using BsWidgetShareCodes;
- using Newtonsoft.Json;
- using System;
- using WebSocketSharp;
- namespace BsWidget.BsYurHttpStatus
- {
- internal class BsYurHttpStatusClient
- {
- private bool _isRunning;
- private WebSocket _webSocket;
- public event EventHandler<YurStatus> Event;
- public void Start()
- {
- _isRunning = true;
- _webSocket = new WebSocket($"ws://{Program.Host}: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<YurStatus>(e.Data);
- OnEvent(evt);
- }
- protected virtual void OnEvent(YurStatus e) => Event?.Invoke(this, e);
- }
- }
|