using System; using System.Net.WebSockets; using System.Threading; using Microsoft.AspNetCore.Http; namespace Infrastructure.WebSockets { public class WebSocketWrapper { public WebSocketWrapper() { this.Id = Guid.NewGuid(); } public Guid Id { get; set; } public HttpContext Context { get; set; } public WebSocket WebSocket { get; set; } public event EventHandler Received; public void Send(ArraySegment data, WebSocketMessageType messageType, Func condition) { if (condition != null && condition.Invoke(this)) { this.WebSocket.SendAsync(data, messageType, true, CancellationToken.None); } } public void OnReceived(string message) { this.Received?.Invoke(this, message); } } }