using System; using System.Text; namespace SocketHttpListener { /// /// Contains the event data associated with a event. /// /// /// A event occurs when the receives /// a text or binary data frame. /// If you want to get the received data, you access the or /// property. /// public class MessageEventArgs : EventArgs { #region Private Fields private string _data; private Opcode _opcode; private byte[] _rawData; #endregion #region Internal Constructors internal MessageEventArgs(Opcode opcode, byte[] data) { _opcode = opcode; _rawData = data; _data = convertToString(opcode, data); } internal MessageEventArgs(Opcode opcode, PayloadData payload) { _opcode = opcode; _rawData = payload.ApplicationData; _data = convertToString(opcode, _rawData); } #endregion #region Public Properties /// /// Gets the received data as a . /// /// /// A that contains the received data. /// public string Data { get { return _data; } } /// /// Gets the received data as an array of . /// /// /// An array of that contains the received data. /// public byte[] RawData { get { return _rawData; } } /// /// Gets the type of the received data. /// /// /// One of the values, indicates the type of the received data. /// public Opcode Type { get { return _opcode; } } #endregion #region Private Methods private static string convertToString(Opcode opcode, byte[] data) { return data.Length == 0 ? string.Empty : opcode == Opcode.Text ? Encoding.UTF8.GetString(data, 0, data.Length) : opcode.ToString(); } #endregion } }