| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | using System;using System.Text;namespace SocketHttpListener{    /// <summary>    /// Contains the event data associated with a <see cref="WebSocket.OnMessage"/> event.    /// </summary>    /// <remarks>    /// A <see cref="WebSocket.OnMessage"/> event occurs when the <see cref="WebSocket"/> receives    /// a text or binary data frame.    /// If you want to get the received data, you access the <see cref="Data"/> or    /// <see cref="RawData"/> property.    /// </remarks>    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        /// <summary>        /// Gets the received data as a <see cref="string"/>.        /// </summary>        /// <value>        /// A <see cref="string"/> that contains the received data.        /// </value>        public string Data => _data;        /// <summary>        /// Gets the received data as an array of <see cref="byte"/>.        /// </summary>        /// <value>        /// An array of <see cref="byte"/> that contains the received data.        /// </value>        public byte[] RawData => _rawData;        /// <summary>        /// Gets the type of the received data.        /// </summary>        /// <value>        /// One of the <see cref="Opcode"/> values, indicates the type of the received data.        /// </value>        public Opcode Type => _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    }}
 |