| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | using MediaBrowser.Common.Net;using MediaBrowser.Model.Net;using System;using System.Threading;using System.Threading.Tasks;using IWebSocketConnection = Fleck.IWebSocketConnection;namespace MediaBrowser.Server.Implementations.WebSocket{    public class FleckWebSocket : IWebSocket    {        private readonly IWebSocketConnection _connection;        public FleckWebSocket(IWebSocketConnection connection)        {            _connection = connection;            _connection.OnMessage = OnReceiveData;        }        public WebSocketState State        {            get { return _connection.IsAvailable ? WebSocketState.Open : WebSocketState.Closed; }        }        private void OnReceiveData(string data)        {            if (OnReceive != null)            {                OnReceive(data);            }        }        public Task SendAsync(byte[] bytes, WebSocketMessageType type, bool endOfMessage, CancellationToken cancellationToken)        {            return Task.Run(() => _connection.Send(bytes));        }        public void Dispose()        {            _connection.Close();        }        public Action<byte[]> OnReceiveBytes { get; set; }        public Action<string> OnReceive { get; set; }    }}
 |