You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.3 KiB
97 lines
2.3 KiB
8 years ago
|
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
|
||
|
}
|
||
|
}
|