123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- 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="MessageEventArgs.Data"/> or
- /// <see cref="MessageEventArgs.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 {
- get {
- return _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 {
- get {
- return _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 {
- 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
- }
- }
|