| 1 | using Core.Event; |
| 2 | using Core.Librarys; |
| 3 | using Core.Librarys.Browser; |
| 4 | using Core.Models.WebPage; |
| 5 | using Core.Servicers.Interfaces; |
| 6 | using Newtonsoft.Json; |
| 7 | using System; |
| 8 | using System.Collections.Generic; |
| 9 | using System.Diagnostics; |
| 10 | using System.Linq; |
| 11 | using System.Net; |
| 12 | using System.Text; |
| 13 | using System.Threading.Tasks; |
| 14 | using WebSocketSharp; |
| 15 | using WebSocketSharp.Server; |
| 16 | |
| 17 | namespace Core.Servicers.Instances |
| 18 | { |
| 19 | public class WebServer : WebSocketBehavior, IWebServer |
| 20 | { |
| 21 | private WebSocketServer _webSocket; |
| 22 | private bool _isStart = false; |
| 23 | |
| 24 | public void Start() |
| 25 | { |
| 26 | if (_isStart) return; |
| 27 | try |
| 28 | { |
| 29 | _webSocket = new WebSocketServer(8908, false); |
| 30 | _webSocket.AddWebSocketService<WebServer>("/TaiWebSentry"); |
| 31 | _webSocket.Start(); |
| 32 | _isStart = true; |
| 33 | } |
| 34 | catch (Exception ex) |
| 35 | { |
| 36 | Librarys.Logger.Error("无法启动浏览器服务," + ex); |
| 37 | } |
| 38 | } |
| 39 | |
| 40 | public void Stop() |
| 41 | { |
| 42 | if (!_isStart) return; |
| 43 | _webSocket?.Stop(); |
| 44 | _isStart = false; |
| 45 | } |
| 46 | |
| 47 | public void SendMsg(string msg_) |
| 48 | { |
| 49 | try |
| 50 | { |
| 51 | if (!_isStart) return; |
| 52 | |
| 53 | _webSocket.WebSocketServices.Broadcast(msg_); |
| 54 | } |
| 55 | catch (Exception ec) |
| 56 | { |
| 57 | Librarys.Logger.Error(ec.ToString()); |
| 58 | } |
| 59 | } |
| 60 | |
| 61 | |
| 62 | protected override void OnMessage(MessageEventArgs e) |
| 63 | { |
| 64 | try |
| 65 | { |
| 66 | var log = JsonConvert.DeserializeObject<NotifyWeb>(e.Data); |
| 67 | WebSocketEvent.Invoke(log); |
| 68 | } |
| 69 | catch |
| 70 | { |
| 71 | |
| 72 | } |
| 73 | } |
| 74 | } |
| 75 | } |