Fix due to the modified WebSocketContext.cs

This commit is contained in:
sta
2013-02-26 11:39:59 +09:00
parent 8232c95cd8
commit 2e8a24a667
93 changed files with 1016 additions and 362 deletions

View File

@@ -458,6 +458,35 @@ namespace WebSocketSharp {
return !(BitConverter.IsLittleEndian ^ (order == ByteOrder.LITTLE));
}
/// <summary>
/// Determines whether the specified <see cref="System.Net.IPAddress"/> represents a local IP address.
/// </summary>
/// <returns>
/// <c>true</c> if <paramref name="address"/> represents a local IP address; otherwise, <c>false</c>.
/// </returns>
/// <param name="address">
/// A <see cref="System.Net.IPAddress"/> to test.
/// </param>
/// <exception cref="ArgumentNullException">
/// <paramref name="address"/> is <see langword="null"/>.
/// </exception>
public static bool IsLocal(this System.Net.IPAddress address)
{
if (address.IsNull())
throw new ArgumentNullException("address");
if (System.Net.IPAddress.IsLoopback(address))
return true;
var host = System.Net.Dns.GetHostName();
var addrs = System.Net.Dns.GetHostAddresses(host);
foreach (var addr in addrs)
if (address.Equals(addr))
return true;
return false;
}
/// <summary>
/// Determines whether the specified object is <see langword="null"/>.
/// </summary>

View File

@@ -153,43 +153,46 @@ namespace WebSocketSharp.Net {
}
}
// TODO: Always returns false
public bool IsAuthenticated {
// TODO: Always returns false
get { return false; }
}
/// <summary>
/// Gets a value indicating whether the request is sent from the local computer.
/// </summary>
/// <value>
/// <c>true</c> if the request is sent from the local computer; otherwise, <c>false</c>.
/// </value>
public bool IsLocal {
get { return IPAddress.IsLoopback (RemoteEndPoint.Address); }
get { return RemoteEndPoint.Address.IsLocal(); }
}
public bool IsSecureConnection {
get { return context.Connection.IsSecure; }
}
/// <summary>
/// Gets a value indicating whether the request is a WebSocket connection request.
/// </summary>
/// <value>
/// <c>true</c> if the request is a WebSocket connection request; otherwise, <c>false</c>.
/// </value>
public bool IsWebSocketRequest {
get {
if (method != "GET")
return false;
if (version != HttpVersion.Version11)
return false;
if (!headers.Exists("Upgrade", "websocket"))
return false;
if (!headers.Exists("Connection", "Upgrade"))
return false;
if (!headers.Exists("Host"))
return false;
if (!headers.Exists("Sec-WebSocket-Key"))
return false;
if (!headers.Exists("Sec-WebSocket-Version"))
return false;
return true;
return method != "GET"
? false
: version != HttpVersion.Version11
? false
: !headers.Exists("Upgrade", "websocket")
? false
: !headers.Exists("Connection", "Upgrade")
? false
: !headers.Exists("Host")
? false
: !headers.Exists("Sec-WebSocket-Key")
? false
: headers.Exists("Sec-WebSocket-Version");
}
}

View File

@@ -43,8 +43,8 @@ namespace WebSocketSharp.Net.WebSockets {
#region Fields
private HttpListenerContext _context;
private WebSocket _socket;
private WsStream _stream;
private WebSocket _websocket;
private WsStream _wsStream;
#endregion
@@ -52,24 +52,18 @@ namespace WebSocketSharp.Net.WebSockets {
internal HttpListenerWebSocketContext(HttpListenerContext context)
{
_context = context;
_stream = WsStream.CreateServerStream(context);
_socket = new WebSocket(this);
_context = context;
_wsStream = WsStream.CreateServerStream(context);
_websocket = new WebSocket(this);
}
#endregion
#region Internal Properties
internal HttpListenerContext BaseContext {
get {
return _context;
}
}
#region Internal Property
internal WsStream Stream {
get {
return _stream;
return _wsStream;
}
}
@@ -137,6 +131,22 @@ namespace WebSocketSharp.Net.WebSockets {
}
}
/// <summary>
/// Gets a value indicating whether the WebSocket connection request is valid.
/// </summary>
/// <value>
/// <c>true</c> if the WebSocket connection request is valid; otherwise, <c>false</c>.
/// </value>
public override bool IsValid {
get {
return !_context.Request.IsWebSocketRequest
? false
: SecWebSocketKey.IsNullOrEmpty()
? false
: !SecWebSocketVersion.IsNullOrEmpty();
}
}
/// <summary>
/// Gets the value of the Origin header field used in the WebSocket opening handshake.
/// </summary>
@@ -161,6 +171,18 @@ namespace WebSocketSharp.Net.WebSockets {
}
}
/// <summary>
/// Gets the collection of query string variables used in the WebSocket opening handshake.
/// </summary>
/// <value>
/// A <see cref="NameValueCollection"/> that contains the collection of query string variables.
/// </value>
public override NameValueCollection QueryString {
get {
return _context.Request.QueryString;
}
}
/// <summary>
/// Gets the WebSocket URI requested by the client.
/// </summary>
@@ -262,10 +284,19 @@ namespace WebSocketSharp.Net.WebSockets {
/// </value>
public override WebSocket WebSocket {
get {
return _socket;
return _websocket;
}
}
#endregion
#region Internal Method
internal void Close()
{
_context.Connection.Close(true);
}
#endregion
}
}

View File

@@ -43,38 +43,32 @@ namespace WebSocketSharp.Net.WebSockets {
{
#region Fields
private TcpClient _client;
private TcpClient _tcpClient;
private bool _isSecure;
private RequestHandshake _request;
private WebSocket _socket;
private WsStream _stream;
private WebSocket _websocket;
private WsStream _wsStream;
#endregion
#region Constructor
internal TcpListenerWebSocketContext(TcpClient client, bool secure)
internal TcpListenerWebSocketContext(TcpClient tcpClient, bool secure)
{
_client = client;
_isSecure = secure;
_stream = WsStream.CreateServerStream(client, secure);
_request = RequestHandshake.Parse(_stream.ReadHandshake());
_socket = new WebSocket(this);
_tcpClient = tcpClient;
_isSecure = secure;
_wsStream = WsStream.CreateServerStream(tcpClient, secure);
_request = RequestHandshake.Parse(_wsStream.ReadHandshake());
_websocket = new WebSocket(this);
}
#endregion
#region Internal Properties
internal TcpClient Client {
get {
return _client;
}
}
internal WsStream Stream {
get {
return _stream;
return _wsStream;
}
}
@@ -130,12 +124,9 @@ namespace WebSocketSharp.Net.WebSockets {
/// <value>
/// <c>true</c> if the client connected from the local computer; otherwise, <c>false</c>.
/// </value>
/// <exception cref="NotImplementedException">
/// This property is not implemented.
/// </exception>
public override bool IsLocal {
get {
throw new NotImplementedException();
return UserEndPoint.Address.IsLocal();
}
}
@@ -151,6 +142,22 @@ namespace WebSocketSharp.Net.WebSockets {
}
}
/// <summary>
/// Gets a value indicating whether the WebSocket connection request is valid.
/// </summary>
/// <value>
/// <c>true</c> if the WebSocket connection request is valid; otherwise, <c>false</c>.
/// </value>
public override bool IsValid {
get {
return !_request.IsWebSocketRequest
? false
: SecWebSocketKey.IsNullOrEmpty()
? false
: !SecWebSocketVersion.IsNullOrEmpty();
}
}
/// <summary>
/// Gets the value of the Origin header field used in the WebSocket opening handshake.
/// </summary>
@@ -175,6 +182,18 @@ namespace WebSocketSharp.Net.WebSockets {
}
}
/// <summary>
/// Gets the collection of query string variables used in the WebSocket opening handshake.
/// </summary>
/// <value>
/// A <see cref="NameValueCollection"/> that contains the collection of query string variables.
/// </value>
public override NameValueCollection QueryString {
get {
return _request.QueryString;
}
}
/// <summary>
/// Gets the WebSocket URI requested by the client.
/// </summary>
@@ -240,7 +259,7 @@ namespace WebSocketSharp.Net.WebSockets {
/// </value>
public virtual System.Net.IPEndPoint ServerEndPoint {
get {
return (System.Net.IPEndPoint)_client.Client.LocalEndPoint;
return (System.Net.IPEndPoint)_tcpClient.Client.LocalEndPoint;
}
}
@@ -267,7 +286,7 @@ namespace WebSocketSharp.Net.WebSockets {
/// </value>
public virtual System.Net.IPEndPoint UserEndPoint {
get {
return (System.Net.IPEndPoint)_client.Client.RemoteEndPoint;
return (System.Net.IPEndPoint)_tcpClient.Client.RemoteEndPoint;
}
}
@@ -279,10 +298,20 @@ namespace WebSocketSharp.Net.WebSockets {
/// </value>
public override WebSocket WebSocket {
get {
return _socket;
return _websocket;
}
}
#endregion
#region Internal Method
internal void Close()
{
_wsStream.Close();
_tcpClient.Close();
}
#endregion
}
}

View File

@@ -94,6 +94,14 @@ namespace WebSocketSharp.Net.WebSockets {
/// </value>
public abstract bool IsSecureConnection { get; }
/// <summary>
/// Gets a value indicating whether the WebSocket connection request is valid.
/// </summary>
/// <value>
/// <c>true</c> if the WebSocket connection request is valid; otherwise, <c>false</c>.
/// </value>
public abstract bool IsValid { get; }
/// <summary>
/// Gets the value of the Origin header field used in the WebSocket opening handshake.
/// </summary>
@@ -102,6 +110,14 @@ namespace WebSocketSharp.Net.WebSockets {
/// </value>
public abstract string Origin { get; }
/// <summary>
/// Gets the collection of query string variables used in the WebSocket opening handshake.
/// </summary>
/// <value>
/// A <see cref="NameValueCollection"/> that contains the collection of query string variables.
/// </value>
public abstract NameValueCollection QueryString { get; }
/// <summary>
/// Gets the WebSocket URI requested by the client.
/// </summary>

View File

@@ -68,30 +68,20 @@ namespace WebSocketSharp {
public string HttpMethod { get; private set; }
public bool IsWebSocketRequest {
get {
if (HttpMethod != "GET")
return false;
if (ProtocolVersion != HttpVersion.Version11)
return false;
if (!HeaderExists("Upgrade", "websocket"))
return false;
if (!HeaderExists("Connection", "Upgrade"))
return false;
if (!HeaderExists("Host"))
return false;
if (!HeaderExists("Sec-WebSocket-Key"))
return false;
if (!HeaderExists("Sec-WebSocket-Version"))
return false;
return true;
return HttpMethod != "GET"
? false
: ProtocolVersion != HttpVersion.Version11
? false
: !HeaderExists("Upgrade", "websocket")
? false
: !HeaderExists("Connection", "Upgrade")
? false
: !HeaderExists("Host")
? false
: !HeaderExists("Sec-WebSocket-Key")
? false
: HeaderExists("Sec-WebSocket-Version");
}
}
@@ -125,10 +115,9 @@ namespace WebSocketSharp {
public string RawUrl {
get {
if (RequestUri.IsAbsoluteUri)
return RequestUri.PathAndQuery;
return RequestUri.OriginalString;
return RequestUri.IsAbsoluteUri
? RequestUri.PathAndQuery
: RequestUri.OriginalString;
}
}

View File

@@ -353,7 +353,6 @@ namespace WebSocketSharp.Server {
{
var res = context.Response;
var wsContext = context.AcceptWebSocket();
var socket = wsContext.WebSocket;
var path = wsContext.Path.UrlDecode();
IServiceHost svcHost;
@@ -363,7 +362,7 @@ namespace WebSocketSharp.Server {
return false;
}
svcHost.BindWebSocket(socket);
svcHost.BindWebSocket(wsContext);
return true;
}

View File

@@ -27,11 +27,12 @@
#endregion
using System;
using WebSocketSharp.Net.WebSockets;
namespace WebSocketSharp.Server {
/// <summary>
/// Exposes the methods and property for the WebSocket service host.
/// Exposes the methods and property for the host that provides a <see cref="WebSocketService"/>.
/// </summary>
/// <remarks>
/// </remarks>
@@ -46,12 +47,12 @@ namespace WebSocketSharp.Server {
bool Sweeped { get; set; }
/// <summary>
/// Binds the specified <see cref="WebSocket"/> to the WebSocket service instance.
/// Binds the specified <see cref="WebSocketContext"/> to a <see cref="WebSocketService"/> instance.
/// </summary>
/// <param name="socket">
/// A <see cref="WebSocketSharp.WebSocket"/> to bind.
/// <param name="context">
/// A <see cref="WebSocketContext"/> that contains the WebSocket connection request objects to bind.
/// </param>
void BindWebSocket(WebSocket socket);
void BindWebSocket(WebSocketContext context);
/// <summary>
/// Broadcasts the specified <see cref="string"/> to all service clients.

View File

@@ -191,27 +191,27 @@ namespace WebSocketSharp.Server {
#region Protected Method
/// <summary>
/// Accepts a WebSocket connection.
/// Accepts a WebSocket connection request.
/// </summary>
/// <param name="context">
/// A <see cref="TcpListenerWebSocketContext"/> that contains the WebSocket connection request objects.
/// </param>
protected override void AcceptWebSocket(TcpListenerWebSocketContext context)
{
var socket = context.WebSocket;
var path = context.Path.UrlDecode();
var websocket = context.WebSocket;
var path = context.Path.UrlDecode();
IServiceHost svcHost;
if (!_svcHosts.TryGetServiceHost(path, out svcHost))
{
socket.Close(HttpStatusCode.NotImplemented);
websocket.Close(HttpStatusCode.NotImplemented);
return;
}
if (BaseUri.IsAbsoluteUri)
socket.Url = new Uri(BaseUri, path);
websocket.Url = new Uri(BaseUri, path);
svcHost.BindWebSocket(socket);
svcHost.BindWebSocket(context);
}
#endregion

View File

@@ -336,7 +336,7 @@ namespace WebSocketSharp.Server {
#region Protected Methods
/// <summary>
/// Accepts a WebSocket connection.
/// Accepts a WebSocket connection request.
/// </summary>
/// <param name="context">
/// A <see cref="TcpListenerWebSocketContext"/> that contains the WebSocket connection request objects.

View File

@@ -30,6 +30,7 @@ using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Threading;
using WebSocketSharp.Net.WebSockets;
namespace WebSocketSharp.Server {
@@ -43,8 +44,9 @@ namespace WebSocketSharp.Server {
#region Private Fields
private WebSocketContext _context;
private WebSocketServiceManager _sessions;
private WebSocket _socket;
private WebSocket _websocket;
#endregion
@@ -64,26 +66,30 @@ namespace WebSocketSharp.Server {
#region Protected Properties
/// <summary>
/// Gets the HTTP query string variables used in the WebSocket opening handshake.
/// Gets the collection of query string variables used in the WebSocket opening handshake.
/// </summary>
/// <value>
/// A <see cref="NameValueCollection"/> that contains the query string variables.
/// A <see cref="NameValueCollection"/> that contains the collection of query string variables.
/// </value>
protected NameValueCollection QueryString {
get {
return IsBound ? _socket.QueryString : null;
return IsBound
? _context.QueryString
: null;
}
}
/// <summary>
/// Gets the sessions to the WebSocket service.
/// Gets the sessions to the <see cref="WebSocketService"/>.
/// </summary>
/// <value>
/// A <see cref="WebSocketServiceManager"/> that contains the sessions to the WebSocket service.
/// A <see cref="WebSocketServiceManager"/> that contains the sessions to the the <see cref="WebSocketService"/>.
/// </value>
protected WebSocketServiceManager Sessions {
get {
return IsBound ? _sessions : null;
return IsBound
? _sessions
: null;
}
}
@@ -137,30 +143,31 @@ namespace WebSocketSharp.Server {
#region Internal Methods
internal void Bind(WebSocket socket, WebSocketServiceManager sessions)
internal void Bind(WebSocketContext context, WebSocketServiceManager sessions)
{
if (IsBound)
return;
_socket = socket;
_sessions = sessions;
_context = context;
_sessions = sessions;
_websocket = context.WebSocket;
_socket.OnOpen += onOpen;
_socket.OnMessage += onMessage;
_socket.OnError += onError;
_socket.OnClose += onClose;
_websocket.OnOpen += onOpen;
_websocket.OnMessage += onMessage;
_websocket.OnError += onError;
_websocket.OnClose += onClose;
IsBound = true;
}
internal void SendAsync(byte[] data, Action completed)
{
_socket.SendAsync(data, completed);
_websocket.SendAsync(data, completed);
}
internal void SendAsync(string data, Action completed)
{
_socket.SendAsync(data, completed);
_websocket.SendAsync(data, completed);
}
#endregion
@@ -288,7 +295,7 @@ namespace WebSocketSharp.Server {
public bool Ping(string message)
{
return IsBound
? _socket.Ping(message)
? _websocket.Ping(message)
: false;
}
@@ -340,7 +347,7 @@ namespace WebSocketSharp.Server {
public void Send(byte[] data)
{
if (IsBound)
_socket.Send(data);
_websocket.Send(data);
}
/// <summary>
@@ -352,7 +359,7 @@ namespace WebSocketSharp.Server {
public void Send(string data)
{
if (IsBound)
_socket.Send(data);
_websocket.Send(data);
}
/// <summary>
@@ -401,7 +408,7 @@ namespace WebSocketSharp.Server {
public void Start()
{
if (IsBound)
_socket.Connect();
_websocket.Connect();
}
/// <summary>
@@ -412,7 +419,7 @@ namespace WebSocketSharp.Server {
if (!IsBound)
return;
_socket.Close();
_websocket.Close();
}
/// <summary>
@@ -429,7 +436,7 @@ namespace WebSocketSharp.Server {
if (!IsBound)
return;
_socket.Close(code, reason);
_websocket.Close(code, reason);
}
/// <summary>

View File

@@ -229,15 +229,15 @@ namespace WebSocketSharp.Server {
#region Explicit Interface Implementation
/// <summary>
/// Binds the specified <see cref="WebSocket"/> to the WebSocket service instance.
/// Binds the specified <see cref="WebSocketContext"/> to a <see cref="WebSocketService"/> instance.
/// </summary>
/// <param name="socket">
/// A <see cref="WebSocket"/> to bind.
/// <param name="context">
/// A <see cref="WebSocketContext"/> that contains the WebSocket connection request objects to bind.
/// </param>
void IServiceHost.BindWebSocket(WebSocket socket)
void IServiceHost.BindWebSocket(WebSocketContext context)
{
T service = new T();
service.Bind(socket, _sessions);
service.Bind(context, _sessions);
service.Start();
}
@@ -246,25 +246,25 @@ namespace WebSocketSharp.Server {
#region Protected Method
/// <summary>
/// Accepts a WebSocket connection.
/// Accepts a WebSocket connection request.
/// </summary>
/// <param name="context">
/// A <see cref="TcpListenerWebSocketContext"/> that contains the WebSocket connection request objects.
/// </param>
protected override void AcceptWebSocket(TcpListenerWebSocketContext context)
{
var socket = context.WebSocket;
var path = context.Path.UrlDecode();
var websocket = context.WebSocket;
var path = context.Path.UrlDecode();
if (path != Uri.GetAbsolutePath().UrlDecode())
{
socket.Close(HttpStatusCode.NotImplemented);
websocket.Close(HttpStatusCode.NotImplemented);
return;
}
if (Uri.IsAbsoluteUri)
socket.Url = Uri;
websocket.Url = Uri;
((IServiceHost)this).BindWebSocket(socket);
((IServiceHost)this).BindWebSocket(context);
}
#endregion

View File

@@ -64,24 +64,22 @@ namespace WebSocketSharp {
#region Private Fields
private string _base64key;
private HttpListenerContext _httpContext;
private WebSocketContext _context;
private System.Net.IPEndPoint _endPoint;
private string _extensions;
private AutoResetEvent _exitMessageLoop;
private Object _forClose;
private Object _forSend;
private bool _isClient;
private bool _isSecure;
private string _protocol;
private string _protocols;
private NameValueCollection _queryString;
private volatile WsState _readyState;
private AutoResetEvent _receivePong;
private TcpClient _tcpClient;
private Uri _uri;
private WsStream _wsStream;
private string _base64key;
private Action _closeContext;
private WebSocketContext _context;
private string _extensions;
private AutoResetEvent _exitMessageLoop;
private Object _forClose;
private Object _forSend;
private bool _isClient;
private bool _isSecure;
private string _protocol;
private string _protocols;
private volatile WsState _readyState;
private AutoResetEvent _receivePong;
private TcpClient _tcpClient;
private Uri _uri;
private WsStream _wsStream;
#endregion
@@ -103,25 +101,17 @@ namespace WebSocketSharp {
internal WebSocket(HttpListenerWebSocketContext context)
: this()
{
_uri = context.Path.ToUri();
_context = context;
_httpContext = context.BaseContext;
_wsStream = context.Stream;
_endPoint = context.ServerEndPoint;
_isClient = false;
_isSecure = context.IsSecureConnection;
_wsStream = context.Stream;
_closeContext = () => context.Close();
init(context);
}
internal WebSocket(TcpListenerWebSocketContext context)
: this()
{
_uri = context.Path.ToUri();
_context = context;
_tcpClient = context.Client;
_wsStream = context.Stream;
_endPoint = context.ServerEndPoint;
_isClient = false;
_isSecure = context.IsSecureConnection;
_wsStream = context.Stream;
_closeContext = () => context.Close();
init(context);
}
#endregion
@@ -207,16 +197,6 @@ namespace WebSocketSharp {
#endregion
#region Internal Property
internal NameValueCollection QueryString {
get {
return _queryString;
}
}
#endregion
#region Public Properties
/// <summary>
@@ -292,6 +272,7 @@ namespace WebSocketSharp {
get {
return _uri;
}
internal set {
if (_readyState == WsState.CONNECTING && !_isClient)
_uri = value;
@@ -329,15 +310,8 @@ namespace WebSocketSharp {
// As Server
private void acceptHandshake()
{
var req = receiveOpeningHandshake();
string msg;
if (!isValidRequest(req, out msg))
{
onError(msg);
close(CloseStatusCode.ABNORMAL, msg);
if (!receiveOpeningHandshake())
return;
}
sendResponseHandshake();
onOpen();
@@ -363,7 +337,7 @@ namespace WebSocketSharp {
return;
sendResponseHandshake(code);
closeConnection();
closeResources();
}
private void close(PayloadData data)
@@ -428,30 +402,24 @@ namespace WebSocketSharp {
close(payloadData);
}
private bool closeConnection()
private void closeHandshake(PayloadData data)
{
var args = new CloseEventArgs(data);
var frame = createFrame(Fin.FINAL, Opcode.CLOSE, data);
send(frame);
onClose(args);
}
private bool closeResources()
{
_readyState = WsState.CLOSED;
try
{
if (!_httpContext.IsNull())
{
_httpContext.Response.Close();
_wsStream = null;
_httpContext = null;
}
if (!_wsStream.IsNull())
{
_wsStream.Dispose();
_wsStream = null;
}
if (!_tcpClient.IsNull())
{
_tcpClient.Close();
_tcpClient = null;
}
if (_isClient)
closeResourcesAsClient();
else
closeResourcesAsServer();
return true;
}
@@ -462,12 +430,31 @@ namespace WebSocketSharp {
}
}
private void closeHandshake(PayloadData data)
// As Client
private void closeResourcesAsClient()
{
var args = new CloseEventArgs(data);
var frame = createFrame(Fin.FINAL, Opcode.CLOSE, data);
send(frame);
onClose(args);
if (!_wsStream.IsNull())
{
_wsStream.Dispose();
_wsStream = null;
}
if (!_tcpClient.IsNull())
{
_tcpClient.Close();
_tcpClient = null;
}
}
// As Server
private void closeResourcesAsServer()
{
if (!_context.IsNull() && !_closeContext.IsNull())
{
_closeContext();
_wsStream = null;
_context = null;
}
}
// As Client
@@ -539,9 +526,9 @@ namespace WebSocketSharp {
private string createResponseKey()
{
SHA1 sha1 = new SHA1CryptoServiceProvider();
var sb = new StringBuilder(_base64key);
var sb = new StringBuilder(_base64key);
sb.Append(_guid);
var src = sha1.ComputeHash(Encoding.UTF8.GetBytes(sb.ToString()));
var src = sha1.ComputeHash(Encoding.UTF8.GetBytes(sb.ToString()));
return Convert.ToBase64String(src);
}
@@ -562,6 +549,16 @@ namespace WebSocketSharp {
onOpen();
}
// As Server
private void init(WebSocketContext context)
{
_context = context;
_isSecure = context.IsSecureConnection;
_uri = "/".ToUri();
_isClient = false;
}
private bool isValidCloseStatusCode(ushort code, out string message)
{
if (code < 1000)
@@ -594,65 +591,33 @@ namespace WebSocketSharp {
}
// As Server
private bool isValidRequest(RequestHandshake request, out string message)
private bool isValidRequest()
{
if (!request.IsWebSocketRequest)
{
message = "Invalid WebSocket request.";
return false;
}
if (_uri.IsAbsoluteUri && !isValidRequestHost(request.Headers["Host"], out message))
return false;
if (!request.HeaderExists("Sec-WebSocket-Version", _version))
{
message = "Unsupported Sec-WebSocket-Version.";
return false;
}
_base64key = request.Headers["Sec-WebSocket-Key"];
if (request.HeaderExists("Sec-WebSocket-Protocol"))
_protocols = request.Headers["Sec-WebSocket-Protocol"];
if (request.HeaderExists("Sec-WebSocket-Extensions"))
_extensions = request.Headers["Sec-WebSocket-Extensions"];
_queryString = request.QueryString;
message = String.Empty;
return true;
return !_context.IsValid
? false
: !isValidRequestHostHeader()
? false
: _context.Headers.Exists("Sec-WebSocket-Version", _version);
}
// As Server
private bool isValidRequestHost(string value, out string message)
private bool isValidRequestHostHeader()
{
var host = _uri.DnsSafeHost;
var type = Uri.CheckHostName(host);
var address = _endPoint.Address;
var port = _endPoint.Port;
var authority = _context.Headers["Host"];
if (authority.IsNullOrEmpty() || !_uri.IsAbsoluteUri)
return true;
var expectedHost1 = host;
var expectedHost2 = type == UriHostNameType.Dns
? address.ToString()
: System.Net.Dns.GetHostEntry(address).HostName;
var i = authority.IndexOf(':');
var host = i > 0
? authority.Substring(0, i)
: authority;
var type = Uri.CheckHostName(host);
if (port != 80)
{
expectedHost1 += ":" + port;
expectedHost2 += ":" + port;
}
if (expectedHost1.NotEqual(value, false) &&
expectedHost2.NotEqual(value, false))
{
message = "Invalid Host.";
return false;
}
message = String.Empty;
return true;
return type != UriHostNameType.Dns
? true
: Uri.CheckHostName(_uri.DnsSafeHost) != UriHostNameType.Dns
? true
: host == _uri.DnsSafeHost;
}
// As Client
@@ -693,7 +658,7 @@ namespace WebSocketSharp {
if (!_exitMessageLoop.IsNull())
_exitMessageLoop.WaitOne(5 * 1000);
if (closeConnection())
if (closeResources())
eventArgs.WasClean = true;
OnClose.Emit(this, eventArgs);
@@ -879,14 +844,28 @@ namespace WebSocketSharp {
}
// As Server
private RequestHandshake receiveOpeningHandshake()
private bool receiveOpeningHandshake()
{
var req = RequestHandshake.Parse(_context);
#if DEBUG
var req = RequestHandshake.Parse(_context);
Console.WriteLine("WS: Info@receiveOpeningHandshake: Opening handshake from client:\n");
Console.WriteLine(req.ToString());
#endif
return req;
if (!isValidRequest())
{
onError("Invalid WebSocket connection request.");
close(HttpStatusCode.BadRequest);
return false;
}
_base64key = _context.SecWebSocketKey;
if (_context.Headers.Exists("Sec-WebSocket-Protocol"))
_protocols = _context.Headers["Sec-WebSocket-Protocol"];
if (_context.Headers.Exists("Sec-WebSocket-Extensions"))
_extensions = _context.Headers["Sec-WebSocket-Extensions"];
return true;
}
// As Client

View File

@@ -223,6 +223,20 @@
A <see cref="T:WebSocketSharp.ByteOrder" /> to test.
</param>
</member>
<member name="M:WebSocketSharp.Ext.IsLocal(System.Net.IPAddress)">
<summary>
Determines whether the specified <see cref="T:System.Net.IPAddress" /> represents a local IP address.
</summary>
<returns>
<c>true</c> if <paramref name="address" /> represents a local IP address; otherwise, <c>false</c>.
</returns>
<param name="address">
A <see cref="T:System.Net.IPAddress" /> to test.
</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="address" /> is <see langword="null" />.
</exception>
</member>
<member name="M:WebSocketSharp.Ext.IsNull``1(``0)">
<summary>
Determines whether the specified object is <see langword="null" />.
@@ -1131,7 +1145,7 @@
</member>
<member name="M:WebSocketSharp.Server.WebSocketServer.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext)">
<summary>
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
</summary>
<param name="context">
A <see cref="T:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext" /> that contains the WebSocket connection request objects.
@@ -1176,18 +1190,18 @@
</member>
<member name="P:WebSocketSharp.Server.WebSocketService.QueryString">
<summary>
Gets the HTTP query string variables used in the WebSocket opening handshake.
Gets the collection of query string variables used in the WebSocket opening handshake.
</summary>
<value>
A <see cref="T:System.Collections.Specialized.NameValueCollection" /> that contains the query string variables.
A <see cref="T:System.Collections.Specialized.NameValueCollection" /> that contains the collection of query string variables.
</value>
</member>
<member name="P:WebSocketSharp.Server.WebSocketService.Sessions">
<summary>
Gets the sessions to the WebSocket service.
Gets the sessions to the <see cref="T:WebSocketSharp.Server.WebSocketService" />.
</summary>
<value>
A <see cref="T:WebSocketSharp.Server.WebSocketServiceManager" /> that contains the sessions to the WebSocket service.
A <see cref="T:WebSocketSharp.Server.WebSocketServiceManager" /> that contains the sessions to the the <see cref="T:WebSocketSharp.Server.WebSocketService" />.
</value>
</member>
<member name="P:WebSocketSharp.Server.WebSocketService.ID">
@@ -1817,6 +1831,22 @@
The <see cref="T:WebSocketSharp.Net.HttpListener" /> associated with this <see cref="T:WebSocketSharp.Net.HttpListenerPrefixCollection" /> is closed.
</exception>
</member>
<member name="P:WebSocketSharp.Net.HttpListenerRequest.IsLocal">
<summary>
Gets a value indicating whether the request is sent from the local computer.
</summary>
<value>
<c>true</c> if the request is sent from the local computer; otherwise, <c>false</c>.
</value>
</member>
<member name="P:WebSocketSharp.Net.HttpListenerRequest.IsWebSocketRequest">
<summary>
Gets a value indicating whether the request is a WebSocket connection request.
</summary>
<value>
<c>true</c> if the request is a WebSocket connection request; otherwise, <c>false</c>.
</value>
</member>
<member name="M:WebSocketSharp.Net.HttpUtility.HtmlDecode(System.String)">
<summary>
Decodes an HTML-encoded string and returns the decoded string.
@@ -2444,7 +2474,7 @@
</member>
<member name="M:WebSocketSharp.Server.WebSocketServerBase.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext)">
<summary>
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
</summary>
<param name="context">
A <see cref="T:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext" /> that contains the WebSocket connection request objects.
@@ -2470,7 +2500,7 @@
</member>
<member name="T:WebSocketSharp.Server.IServiceHost">
<summary>
Exposes the methods and property for the WebSocket service host.
Exposes the methods and property for the host that provides a <see cref="T:WebSocketSharp.Server.WebSocketService" />.
</summary>
<remarks>
</remarks>
@@ -2483,12 +2513,12 @@
<c>true</c> if the WebSocket service host cleans up the inactive service clients periodically; otherwise, <c>false</c>.
</value>
</member>
<member name="M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.WebSocket)">
<member name="M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext)">
<summary>
Binds the specified <see cref="T:WebSocketSharp.WebSocket" /> to the WebSocket service instance.
Binds the specified <see cref="T:WebSocketSharp.Net.WebSockets.WebSocketContext" /> to a <see cref="T:WebSocketSharp.Server.WebSocketService" /> instance.
</summary>
<param name="socket">
A <see cref="T:WebSocketSharp.WebSocket" /> to bind.
<param name="context">
A <see cref="T:WebSocketSharp.Net.WebSockets.WebSocketContext" /> that contains the WebSocket connection request objects to bind.
</param>
</member>
<member name="M:WebSocketSharp.Server.IServiceHost.Broadcast(System.String)">
@@ -2627,17 +2657,17 @@
A <see cref="T:System.Uri" /> that contains a WebSocket URL.
</value>
</member>
<member name="M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.WebSocket)">
<member name="M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext)">
<summary>
Binds the specified <see cref="T:WebSocketSharp.WebSocket" /> to the WebSocket service instance.
Binds the specified <see cref="T:WebSocketSharp.Net.WebSockets.WebSocketContext" /> to a <see cref="T:WebSocketSharp.Server.WebSocketService" /> instance.
</summary>
<param name="socket">
A <see cref="T:WebSocketSharp.WebSocket" /> to bind.
<param name="context">
A <see cref="T:WebSocketSharp.Net.WebSockets.WebSocketContext" /> that contains the WebSocket connection request objects to bind.
</param>
</member>
<member name="M:WebSocketSharp.Server.WebSocketServiceHost`1.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext)">
<summary>
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
</summary>
<param name="context">
A <see cref="T:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext" /> that contains the WebSocket connection request objects.
@@ -2844,6 +2874,14 @@
<c>true</c> if the WebSocket connection is secured; otherwise, <c>false</c>.
</value>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.IsValid">
<summary>
Gets a value indicating whether the WebSocket connection request is valid.
</summary>
<value>
<c>true</c> if the WebSocket connection request is valid; otherwise, <c>false</c>.
</value>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.Origin">
<summary>
Gets the value of the Origin header field used in the WebSocket opening handshake.
@@ -2860,6 +2898,14 @@
A <see cref="T:System.String" /> that contains the absolute path.
</value>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.QueryString">
<summary>
Gets the collection of query string variables used in the WebSocket opening handshake.
</summary>
<value>
A <see cref="T:System.Collections.Specialized.NameValueCollection" /> that contains the collection of query string variables.
</value>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.RequestUri">
<summary>
Gets the WebSocket URI requested by the client.
@@ -2977,9 +3023,6 @@
<value>
<c>true</c> if the client connected from the local computer; otherwise, <c>false</c>.
</value>
<exception cref="T:System.NotImplementedException">
This property is not implemented.
</exception>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.IsSecureConnection">
<summary>
@@ -2989,6 +3032,14 @@
<c>true</c> if the WebSocket connection is secured; otherwise, <c>false</c>.
</value>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.IsValid">
<summary>
Gets a value indicating whether the WebSocket connection request is valid.
</summary>
<value>
<c>true</c> if the WebSocket connection request is valid; otherwise, <c>false</c>.
</value>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.Origin">
<summary>
Gets the value of the Origin header field used in the WebSocket opening handshake.
@@ -3005,6 +3056,14 @@
A <see cref="T:System.String" /> that contains the absolute path.
</value>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.QueryString">
<summary>
Gets the collection of query string variables used in the WebSocket opening handshake.
</summary>
<value>
A <see cref="T:System.Collections.Specialized.NameValueCollection" /> that contains the collection of query string variables.
</value>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.RequestUri">
<summary>
Gets the WebSocket URI requested by the client.
@@ -3134,6 +3193,14 @@
<c>true</c> if the WebSocket connection is secured; otherwise, <c>false</c>.
</value>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.WebSocketContext.IsValid">
<summary>
Gets a value indicating whether the WebSocket connection request is valid.
</summary>
<value>
<c>true</c> if the WebSocket connection request is valid; otherwise, <c>false</c>.
</value>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.WebSocketContext.Origin">
<summary>
Gets the value of the Origin header field used in the WebSocket opening handshake.
@@ -3142,6 +3209,14 @@
A <see cref="T:System.String" /> that contains the value of the Origin header field.
</value>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.WebSocketContext.QueryString">
<summary>
Gets the collection of query string variables used in the WebSocket opening handshake.
</summary>
<value>
A <see cref="T:System.Collections.Specialized.NameValueCollection" /> that contains the collection of query string variables.
</value>
</member>
<member name="P:WebSocketSharp.Net.WebSockets.WebSocketContext.RequestUri">
<summary>
Gets the WebSocket URI requested by the client.

View File

@@ -368,6 +368,34 @@
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a>
</i>.
Gets a value indicating whether the WebSocket connection is secured.
(<i>Inherited from <a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketContext</a>.</i>)</td>
</tr>
<tr valign="top">
<td>[read-only]<div>override </div></td>
<td>
<b>
<a href="#P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.IsValid">IsValid</a>
</b>
</td>
<td>
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a>
</i>.
Gets a value indicating whether the WebSocket connection request is valid.
</td>
</tr>
<tr valign="top">
<td>[read-only]<div>abstract </div></td>
<td>
<b>
<a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html#P:WebSocketSharp.Net.WebSockets.WebSocketContext.IsValid">IsValid</a>
</b>
</td>
<td>
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a>
</i>.
Gets a value indicating whether the WebSocket connection request is valid.
(<i>Inherited from <a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketContext</a>.</i>)</td>
</tr>
<tr valign="top">
@@ -411,6 +439,34 @@
</i>.
Gets the absolute path of the requested WebSocket URI.
</td>
</tr>
<tr valign="top">
<td>[read-only]<div>override </div></td>
<td>
<b>
<a href="#P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.QueryString">QueryString</a>
</b>
</td>
<td>
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a>
</i>.
Gets the collection of query string variables used in the WebSocket opening handshake.
</td>
</tr>
<tr valign="top">
<td>[read-only]<div>abstract </div></td>
<td>
<b>
<a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html#P:WebSocketSharp.Net.WebSockets.WebSocketContext.QueryString">QueryString</a>
</b>
</td>
<td>
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a>
</i>.
Gets the collection of query string variables used in the WebSocket opening handshake.
(<i>Inherited from <a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketContext</a>.</i>)</td>
</tr>
<tr valign="top">
<td>[read-only]<div>override </div></td>
@@ -746,6 +802,26 @@
<b>Namespace: </b>WebSocketSharp.Net.WebSockets<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.IsValid">IsValid Property</h3>
<blockquote id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.IsValid:member">
<p class="Summary">
Gets a value indicating whether the WebSocket connection request is valid.
</p>
<h2>Syntax</h2>
<div class="Signature">public override <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a> <b>IsValid</b> { get; }</div>
<h4 class="Subsection">Value</h4>
<blockquote class="SubsectionBox" id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.IsValid:Value">
<tt>true</tt> if the WebSocket connection request is valid; otherwise, <tt>false</tt>.
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.IsValid:Remarks">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</div>
<h2 class="Section">Requirements</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.IsValid:Version Information">
<b>Namespace: </b>WebSocketSharp.Net.WebSockets<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.Origin">Origin Property</h3>
<blockquote id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.Origin:member">
<p class="Summary">
@@ -786,6 +862,26 @@
<b>Namespace: </b>WebSocketSharp.Net.WebSockets<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.QueryString">QueryString Property</h3>
<blockquote id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.QueryString:member">
<p class="Summary">
Gets the collection of query string variables used in the WebSocket opening handshake.
</p>
<h2>Syntax</h2>
<div class="Signature">public override <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a> <b>QueryString</b> { get; }</div>
<h4 class="Subsection">Value</h4>
<blockquote class="SubsectionBox" id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.QueryString:Value">
A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a> that contains the collection of query string variables.
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.QueryString:Remarks">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</div>
<h2 class="Section">Requirements</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.QueryString:Version Information">
<b>Namespace: </b>WebSocketSharp.Net.WebSockets<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.RequestUri">RequestUri Property</h3>
<blockquote id="P:WebSocketSharp.Net.WebSockets.HttpListenerWebSocketContext.RequestUri:member">
<p class="Summary">

View File

@@ -368,6 +368,34 @@
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a>
</i>.
Gets a value indicating whether the WebSocket connection is secured.
(<i>Inherited from <a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketContext</a>.</i>)</td>
</tr>
<tr valign="top">
<td>[read-only]<div>override </div></td>
<td>
<b>
<a href="#P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.IsValid">IsValid</a>
</b>
</td>
<td>
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a>
</i>.
Gets a value indicating whether the WebSocket connection request is valid.
</td>
</tr>
<tr valign="top">
<td>[read-only]<div>abstract </div></td>
<td>
<b>
<a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html#P:WebSocketSharp.Net.WebSockets.WebSocketContext.IsValid">IsValid</a>
</b>
</td>
<td>
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a>
</i>.
Gets a value indicating whether the WebSocket connection request is valid.
(<i>Inherited from <a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketContext</a>.</i>)</td>
</tr>
<tr valign="top">
@@ -411,6 +439,34 @@
</i>.
Gets the absolute path of the requested WebSocket URI.
</td>
</tr>
<tr valign="top">
<td>[read-only]<div>override </div></td>
<td>
<b>
<a href="#P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.QueryString">QueryString</a>
</b>
</td>
<td>
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a>
</i>.
Gets the collection of query string variables used in the WebSocket opening handshake.
</td>
</tr>
<tr valign="top">
<td>[read-only]<div>abstract </div></td>
<td>
<b>
<a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html#P:WebSocketSharp.Net.WebSockets.WebSocketContext.QueryString">QueryString</a>
</b>
</td>
<td>
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a>
</i>.
Gets the collection of query string variables used in the WebSocket opening handshake.
(<i>Inherited from <a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketContext</a>.</i>)</td>
</tr>
<tr valign="top">
<td>[read-only]<div>override </div></td>
@@ -797,6 +853,26 @@
<b>Namespace: </b>WebSocketSharp.Net.WebSockets<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.IsValid">IsValid Property</h3>
<blockquote id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.IsValid:member">
<p class="Summary">
Gets a value indicating whether the WebSocket connection request is valid.
</p>
<h2>Syntax</h2>
<div class="Signature">public override <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a> <b>IsValid</b> { get; }</div>
<h4 class="Subsection">Value</h4>
<blockquote class="SubsectionBox" id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.IsValid:Value">
<tt>true</tt> if the WebSocket connection request is valid; otherwise, <tt>false</tt>.
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.IsValid:Remarks">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</div>
<h2 class="Section">Requirements</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.IsValid:Version Information">
<b>Namespace: </b>WebSocketSharp.Net.WebSockets<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.Origin">Origin Property</h3>
<blockquote id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.Origin:member">
<p class="Summary">
@@ -837,6 +913,26 @@
<b>Namespace: </b>WebSocketSharp.Net.WebSockets<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.QueryString">QueryString Property</h3>
<blockquote id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.QueryString:member">
<p class="Summary">
Gets the collection of query string variables used in the WebSocket opening handshake.
</p>
<h2>Syntax</h2>
<div class="Signature">public override <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a> <b>QueryString</b> { get; }</div>
<h4 class="Subsection">Value</h4>
<blockquote class="SubsectionBox" id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.QueryString:Value">
A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a> that contains the collection of query string variables.
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.QueryString:Remarks">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</div>
<h2 class="Section">Requirements</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.QueryString:Version Information">
<b>Namespace: </b>WebSocketSharp.Net.WebSockets<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.RequestUri">RequestUri Property</h3>
<blockquote id="P:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext.RequestUri:member">
<p class="Summary">

View File

@@ -321,6 +321,20 @@
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a>
</i>.
Gets a value indicating whether the WebSocket connection is secured.
</td>
</tr>
<tr valign="top">
<td>[read-only]<div>abstract </div></td>
<td>
<b>
<a href="#P:WebSocketSharp.Net.WebSockets.WebSocketContext.IsValid">IsValid</a>
</b>
</td>
<td>
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a>
</i>.
Gets a value indicating whether the WebSocket connection request is valid.
</td>
</tr>
<tr valign="top">
@@ -335,6 +349,20 @@
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.String">string</a>
</i>.
Gets the value of the Origin header field used in the WebSocket opening handshake.
</td>
</tr>
<tr valign="top">
<td>[read-only]<div>abstract </div></td>
<td>
<b>
<a href="#P:WebSocketSharp.Net.WebSockets.WebSocketContext.QueryString">QueryString</a>
</b>
</td>
<td>
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a>
</i>.
Gets the collection of query string variables used in the WebSocket opening handshake.
</td>
</tr>
<tr valign="top">
@@ -575,6 +603,26 @@
<b>Namespace: </b>WebSocketSharp.Net.WebSockets<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.IsValid">IsValid Property</h3>
<blockquote id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.IsValid:member">
<p class="Summary">
Gets a value indicating whether the WebSocket connection request is valid.
</p>
<h2>Syntax</h2>
<div class="Signature">public abstract <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a> <b>IsValid</b> { get; }</div>
<h4 class="Subsection">Value</h4>
<blockquote class="SubsectionBox" id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.IsValid:Value">
<tt>true</tt> if the WebSocket connection request is valid; otherwise, <tt>false</tt>.
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.IsValid:Remarks">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</div>
<h2 class="Section">Requirements</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.IsValid:Version Information">
<b>Namespace: </b>WebSocketSharp.Net.WebSockets<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.Origin">Origin Property</h3>
<blockquote id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.Origin:member">
<p class="Summary">
@@ -595,6 +643,26 @@
<b>Namespace: </b>WebSocketSharp.Net.WebSockets<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.QueryString">QueryString Property</h3>
<blockquote id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.QueryString:member">
<p class="Summary">
Gets the collection of query string variables used in the WebSocket opening handshake.
</p>
<h2>Syntax</h2>
<div class="Signature">public abstract <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a> <b>QueryString</b> { get; }</div>
<h4 class="Subsection">Value</h4>
<blockquote class="SubsectionBox" id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.QueryString:Value">
A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a> that contains the collection of query string variables.
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.QueryString:Remarks">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</div>
<h2 class="Section">Requirements</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.QueryString:Version Information">
<b>Namespace: </b>WebSocketSharp.Net.WebSockets<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.RequestUri">RequestUri Property</h3>
<blockquote id="P:WebSocketSharp.Net.WebSockets.WebSocketContext.RequestUri:member">
<p class="Summary">

View File

@@ -372,7 +372,9 @@
<td>
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a>
</i>. <span class="NotEntered">Documentation for this section has not yet been entered.</span></td>
</i>.
Gets a value indicating whether the request is sent from the local computer.
</td>
</tr>
<tr valign="top">
<td>[read-only]<div></div></td>
@@ -396,7 +398,9 @@
<td>
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a>
</i>. <span class="NotEntered">Documentation for this section has not yet been entered.</span></td>
</i>.
Gets a value indicating whether the request is a WebSocket connection request.
</td>
</tr>
<tr valign="top">
<td>[read-only]<div></div></td>
@@ -618,6 +622,18 @@
</b>(<i>this</i> <i title="&#xA; The type of the parameter.&#xA; ">T</i>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Action">Action</a>)<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a></nobr><blockquote>
Determines whether the specified object is <tt>null</tt>.
And invokes the specified <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Action">Action</a> delegate if the specified object is <tt>null</tt>.
</blockquote></td>
</tr>
<tr valign="top">
<td>
<div>static </div>
</td>
<td colspan="2">
<b>
<a href="../WebSocketSharp/Ext.html#M:WebSocketSharp.Ext.IsUpgradeTo(WebSocketSharp.Net.HttpListenerRequest,System.String)">IsUpgradeTo</a>
</b>(<i>this</i> <a href="../WebSocketSharp.Net/HttpListenerRequest.html">HttpListenerRequest</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.String">string</a>)<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a></nobr><blockquote>
Determines whether the specified <a href="../WebSocketSharp.Net/HttpListenerRequest.html">WebSocketSharp.Net.HttpListenerRequest</a> is the HTTP Upgrade request
to switch to the specified <i>protocol</i>.
</blockquote></td>
</tr>
</table>
@@ -939,14 +955,14 @@
<h3 id="P:WebSocketSharp.Net.HttpListenerRequest.IsLocal">IsLocal Property</h3>
<blockquote id="P:WebSocketSharp.Net.HttpListenerRequest.IsLocal:member">
<p class="Summary">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</p>
Gets a value indicating whether the request is sent from the local computer.
</p>
<h2>Syntax</h2>
<div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a> <b>IsLocal</b> { get; }</div>
<h4 class="Subsection">Value</h4>
<blockquote class="SubsectionBox" id="P:WebSocketSharp.Net.HttpListenerRequest.IsLocal:Value">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</blockquote>
<tt>true</tt> if the request is sent from the local computer; otherwise, <tt>false</tt>.
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.HttpListenerRequest.IsLocal:Remarks">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
@@ -979,14 +995,14 @@
<h3 id="P:WebSocketSharp.Net.HttpListenerRequest.IsWebSocketRequest">IsWebSocketRequest Property</h3>
<blockquote id="P:WebSocketSharp.Net.HttpListenerRequest.IsWebSocketRequest:member">
<p class="Summary">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</p>
Gets a value indicating whether the request is a WebSocket connection request.
</p>
<h2>Syntax</h2>
<div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a> <b>IsWebSocketRequest</b> { get; }</div>
<h4 class="Subsection">Value</h4>
<blockquote class="SubsectionBox" id="P:WebSocketSharp.Net.HttpListenerRequest.IsWebSocketRequest:Value">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</blockquote>
<tt>true</tt> if the request is a WebSocket connection request; otherwise, <tt>false</tt>.
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="P:WebSocketSharp.Net.HttpListenerRequest.IsWebSocketRequest:Remarks">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>

View File

@@ -207,7 +207,7 @@
</div>
<h1 class="PageTitle" id="T:WebSocketSharp.Server.IServiceHost">IServiceHost Interface</h1>
<p class="Summary" id="T:WebSocketSharp.Server.IServiceHost:Summary">
Exposes the methods and property for the WebSocket service host.
Exposes the methods and property for the host that provides a <a href="../WebSocketSharp.Server/WebSocketService.html">WebSocketSharp.Server.WebSocketService</a>.
</p>
<div id="T:WebSocketSharp.Server.IServiceHost:Signature">
<h2>Syntax</h2>
@@ -257,9 +257,9 @@
</td>
<td colspan="2">
<b>
<a href="#M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.WebSocket)">BindWebSocket</a>
</b>(<a href="../WebSocketSharp/WebSocket.html">WebSocketSharp.WebSocket</a>)<blockquote>
Binds the specified <a href="../WebSocketSharp/WebSocket.html">WebSocketSharp.WebSocket</a> to the WebSocket service instance.
<a href="#M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext)">BindWebSocket</a>
</b>(<a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketSharp.Net.WebSockets.WebSocketContext</a>)<blockquote>
Binds the specified <a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketSharp.Net.WebSockets.WebSocketContext</a> to a <a href="../WebSocketSharp.Server/WebSocketService.html">WebSocketSharp.Server.WebSocketService</a> instance.
</blockquote></td>
</tr>
<tr valign="top">
@@ -336,30 +336,30 @@
<div class="Members" id="T:WebSocketSharp.Server.IServiceHost:Members">
<h2 class="Section" id="MemberDetails">Member Details</h2>
<div class="SectionBox" id="_MemberDetails">
<h3 id="M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.WebSocket)">BindWebSocket Method</h3>
<blockquote id="M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.WebSocket):member">
<h3 id="M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext)">BindWebSocket Method</h3>
<blockquote id="M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext):member">
<p class="Summary">
Binds the specified <a href="../WebSocketSharp/WebSocket.html">WebSocketSharp.WebSocket</a> to the WebSocket service instance.
Binds the specified <a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketSharp.Net.WebSockets.WebSocketContext</a> to a <a href="../WebSocketSharp.Server/WebSocketService.html">WebSocketSharp.Server.WebSocketService</a> instance.
</p>
<h2>Syntax</h2>
<div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>BindWebSocket</b> (<a href="../WebSocketSharp/WebSocket.html">WebSocketSharp.WebSocket</a> socket)</div>
<div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>BindWebSocket</b> (<a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketSharp.Net.WebSockets.WebSocketContext</a> context)</div>
<h4 class="Subsection">Parameters</h4>
<blockquote class="SubsectionBox" id="M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.WebSocket):Parameters">
<blockquote class="SubsectionBox" id="M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext):Parameters">
<dl>
<dt>
<i>socket</i>
<i>context</i>
</dt>
<dd>
A <a href="../WebSocketSharp/WebSocket.html">WebSocketSharp.WebSocket</a> to bind.
A <a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketSharp.Net.WebSockets.WebSocketContext</a> that contains the WebSocket connection request objects to bind.
</dd>
</dl>
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.WebSocket):Remarks">
<div class="SectionBox" id="M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext):Remarks">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</div>
<h2 class="Section">Requirements</h2>
<div class="SectionBox" id="M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.WebSocket):Version Information">
<div class="SectionBox" id="M:WebSocketSharp.Server.IServiceHost.BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext):Version Information">
<b>Namespace: </b>WebSocketSharp.Server<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>

View File

@@ -525,7 +525,7 @@
<b>
<a href="#M:WebSocketSharp.Server.WebSocketServer.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext)">AcceptWebSocket</a>
</b>(<a href="../WebSocketSharp.Net.WebSockets/TcpListenerWebSocketContext.html">WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext</a>)<blockquote>
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
</blockquote></td>
</tr>
<tr valign="top">
@@ -536,7 +536,7 @@
<b>
<a href="../WebSocketSharp.Server/WebSocketServerBase.html#M:WebSocketSharp.Server.WebSocketServerBase.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext)">AcceptWebSocket</a>
</b>(<a href="../WebSocketSharp.Net.WebSockets/TcpListenerWebSocketContext.html">WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext</a>)<blockquote>
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
(<i>Inherited from <a href="../WebSocketSharp.Server/WebSocketServerBase.html">WebSocketServerBase</a>.</i>)</blockquote></td>
</tr>
<tr valign="top">
@@ -793,7 +793,7 @@
<h3 id="M:WebSocketSharp.Server.WebSocketServer.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext)">AcceptWebSocket Method</h3>
<blockquote id="M:WebSocketSharp.Server.WebSocketServer.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext):member">
<p class="Summary">
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
</p>
<h2>Syntax</h2>
<div class="Signature">protected override <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>AcceptWebSocket</b> (<a href="../WebSocketSharp.Net.WebSockets/TcpListenerWebSocketContext.html">WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext</a> context)</div>

View File

@@ -411,7 +411,7 @@
<b>
<a href="#M:WebSocketSharp.Server.WebSocketServerBase.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext)">AcceptWebSocket</a>
</b>(<a href="../WebSocketSharp.Net.WebSockets/TcpListenerWebSocketContext.html">WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext</a>)<blockquote>
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
</blockquote></td>
</tr>
<tr valign="top">
@@ -636,7 +636,7 @@
<h3 id="M:WebSocketSharp.Server.WebSocketServerBase.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext)">AcceptWebSocket Method</h3>
<blockquote id="M:WebSocketSharp.Server.WebSocketServerBase.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext):member">
<p class="Summary">
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
</p>
<h2>Syntax</h2>
<div class="Signature">protected abstract <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>AcceptWebSocket</b> (<a href="../WebSocketSharp.Net.WebSockets/TcpListenerWebSocketContext.html">WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext</a> context)</div>

View File

@@ -299,7 +299,7 @@
<i>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a>
</i>.
Gets the HTTP query string variables used in the WebSocket opening handshake.
Gets the collection of query string variables used in the WebSocket opening handshake.
</td>
</tr>
<tr valign="top">
@@ -313,7 +313,7 @@
<i>
<a href="../WebSocketSharp.Server/WebSocketServiceManager.html">WebSocketServiceManager</a>
</i>.
Gets the sessions to the WebSocket service.
Gets the sessions to the <a href="../WebSocketSharp.Server/WebSocketService.html">WebSocketSharp.Server.WebSocketService</a>.
</td>
</tr>
</table>
@@ -1004,13 +1004,13 @@
<h3 id="P:WebSocketSharp.Server.WebSocketService.QueryString">QueryString Property</h3>
<blockquote id="P:WebSocketSharp.Server.WebSocketService.QueryString:member">
<p class="Summary">
Gets the HTTP query string variables used in the WebSocket opening handshake.
Gets the collection of query string variables used in the WebSocket opening handshake.
</p>
<h2>Syntax</h2>
<div class="Signature">protected <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a> <b>QueryString</b> { get; }</div>
<h4 class="Subsection">Value</h4>
<blockquote class="SubsectionBox" id="P:WebSocketSharp.Server.WebSocketService.QueryString:Value">
A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a> that contains the query string variables.
A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Specialized.NameValueCollection">System.Collections.Specialized.NameValueCollection</a> that contains the collection of query string variables.
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="P:WebSocketSharp.Server.WebSocketService.QueryString:Remarks">
@@ -1146,13 +1146,13 @@
<h3 id="P:WebSocketSharp.Server.WebSocketService.Sessions">Sessions Property</h3>
<blockquote id="P:WebSocketSharp.Server.WebSocketService.Sessions:member">
<p class="Summary">
Gets the sessions to the WebSocket service.
Gets the sessions to the <a href="../WebSocketSharp.Server/WebSocketService.html">WebSocketSharp.Server.WebSocketService</a>.
</p>
<h2>Syntax</h2>
<div class="Signature">protected <a href="../WebSocketSharp.Server/WebSocketServiceManager.html">WebSocketServiceManager</a> <b>Sessions</b> { get; }</div>
<h4 class="Subsection">Value</h4>
<blockquote class="SubsectionBox" id="P:WebSocketSharp.Server.WebSocketService.Sessions:Value">
A <a href="../WebSocketSharp.Server/WebSocketServiceManager.html">WebSocketSharp.Server.WebSocketServiceManager</a> that contains the sessions to the WebSocket service.
A <a href="../WebSocketSharp.Server/WebSocketServiceManager.html">WebSocketSharp.Server.WebSocketServiceManager</a> that contains the sessions to the the <a href="../WebSocketSharp.Server/WebSocketService.html">WebSocketSharp.Server.WebSocketService</a>.
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="P:WebSocketSharp.Server.WebSocketService.Sessions:Remarks">

View File

@@ -553,7 +553,7 @@
<b>
<a href="#M:WebSocketSharp.Server.WebSocketServiceHost`1.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext)">AcceptWebSocket</a>
</b>(<a href="../WebSocketSharp.Net.WebSockets/TcpListenerWebSocketContext.html">WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext</a>)<blockquote>
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
</blockquote></td>
</tr>
<tr valign="top">
@@ -564,7 +564,7 @@
<b>
<a href="../WebSocketSharp.Server/WebSocketServerBase.html#M:WebSocketSharp.Server.WebSocketServerBase.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext)">AcceptWebSocket</a>
</b>(<a href="../WebSocketSharp.Net.WebSockets/TcpListenerWebSocketContext.html">WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext</a>)<blockquote>
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
(<i>Inherited from <a href="../WebSocketSharp.Server/WebSocketServerBase.html">WebSocketServerBase</a>.</i>)</blockquote></td>
</tr>
<tr valign="top">
@@ -613,12 +613,12 @@
</div>
</td>
<td>
<a href="#M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.WebSocket)">
<a href="#M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext)">
<b>WebSocketSharp.Server.IServiceHost.BindWebSocket</b>
</a>
</td>
<td>
Binds the specified <a href="../WebSocketSharp/WebSocket.html">WebSocketSharp.WebSocket</a> to the WebSocket service instance.
Binds the specified <a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketSharp.Net.WebSockets.WebSocketContext</a> to a <a href="../WebSocketSharp.Server/WebSocketService.html">WebSocketSharp.Server.WebSocketService</a> instance.
</td>
</tr>
</table>
@@ -912,7 +912,7 @@
<h3 id="M:WebSocketSharp.Server.WebSocketServiceHost`1.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext)">AcceptWebSocket Method</h3>
<blockquote id="M:WebSocketSharp.Server.WebSocketServiceHost`1.AcceptWebSocket(WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext):member">
<p class="Summary">
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
</p>
<h2>Syntax</h2>
<div class="Signature">protected override <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>AcceptWebSocket</b> (<a href="../WebSocketSharp.Net.WebSockets/TcpListenerWebSocketContext.html">WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext</a> context)</div>
@@ -1052,31 +1052,31 @@
<b>Namespace: </b>WebSocketSharp.Server<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.WebSocket)">WebSocketSharp.Server.IServiceHost.BindWebSocket Method</h3>
<blockquote id="M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.WebSocket):member">
<h3 id="M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext)">WebSocketSharp.Server.IServiceHost.BindWebSocket Method</h3>
<blockquote id="M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext):member">
<p class="Summary">
Binds the specified <a href="../WebSocketSharp/WebSocket.html">WebSocketSharp.WebSocket</a> to the WebSocket service instance.
Binds the specified <a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketSharp.Net.WebSockets.WebSocketContext</a> to a <a href="../WebSocketSharp.Server/WebSocketService.html">WebSocketSharp.Server.WebSocketService</a> instance.
</p>
<h2>Syntax</h2>
<div class="Signature">
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>WebSocketSharp.Server.IServiceHost.BindWebSocket</b> (<a href="../WebSocketSharp/WebSocket.html">WebSocketSharp.WebSocket</a> socket)</div>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>WebSocketSharp.Server.IServiceHost.BindWebSocket</b> (<a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketSharp.Net.WebSockets.WebSocketContext</a> context)</div>
<h4 class="Subsection">Parameters</h4>
<blockquote class="SubsectionBox" id="M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.WebSocket):Parameters">
<blockquote class="SubsectionBox" id="M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext):Parameters">
<dl>
<dt>
<i>socket</i>
<i>context</i>
</dt>
<dd>
A <a href="../WebSocketSharp/WebSocket.html">WebSocketSharp.WebSocket</a> to bind.
A <a href="../WebSocketSharp.Net.WebSockets/WebSocketContext.html">WebSocketSharp.Net.WebSockets.WebSocketContext</a> that contains the WebSocket connection request objects to bind.
</dd>
</dl>
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.WebSocket):Remarks">
<div class="SectionBox" id="M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext):Remarks">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</div>
<h2 class="Section">Requirements</h2>
<div class="SectionBox" id="M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.WebSocket):Version Information">
<div class="SectionBox" id="M:WebSocketSharp.Server.WebSocketServiceHost`1.WebSocketSharp#Server#IServiceHost#BindWebSocket(WebSocketSharp.Net.WebSockets.WebSocketContext):Version Information">
<b>Namespace: </b>WebSocketSharp.Server<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>

View File

@@ -223,7 +223,7 @@
<a href="./IServiceHost.html">IServiceHost</a>
</td>
<td>
Exposes the methods and property for the WebSocket service host.
Exposes the methods and property for the host that provides a <a href="../WebSocketSharp.Server/WebSocketService.html">WebSocketSharp.Server.WebSocketService</a>.
</td>
</tr>
<tr valign="top">

View File

@@ -395,6 +395,17 @@
<a href="#M:WebSocketSharp.Ext.IsHostOrder(WebSocketSharp.ByteOrder)">IsHostOrder</a>
</b>(<i>this</i> <a href="../WebSocketSharp/ByteOrder.html">ByteOrder</a>)<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a></nobr><blockquote>
Determines whether the specified <a href="../WebSocketSharp/ByteOrder.html">WebSocketSharp.ByteOrder</a> is host (this computer architecture) byte order.
</blockquote></td>
</tr>
<tr valign="top">
<td>
<div>static </div>
</td>
<td colspan="2">
<b>
<a href="#M:WebSocketSharp.Ext.IsLocal(System.Net.IPAddress)">IsLocal</a>
</b>(<i>this</i> <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Net.IPAddress">System.Net.IPAddress</a>)<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a></nobr><blockquote>
Determines whether the specified <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Net.IPAddress">System.Net.IPAddress</a> represents a local IP address.
</blockquote></td>
</tr>
<tr valign="top">
@@ -1333,6 +1344,54 @@
<b>Namespace: </b>WebSocketSharp<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="M:WebSocketSharp.Ext.IsLocal(System.Net.IPAddress)">IsLocal Method</h3>
<blockquote id="M:WebSocketSharp.Ext.IsLocal(System.Net.IPAddress):member">
<p class="Summary">
Determines whether the specified <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Net.IPAddress">System.Net.IPAddress</a> represents a local IP address.
</p>
<h2>Syntax</h2>
<div class="Signature">public static <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a> <b>IsLocal</b> (<i>this</i> <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Net.IPAddress">System.Net.IPAddress</a> address)</div>
<h4 class="Subsection">Parameters</h4>
<blockquote class="SubsectionBox" id="M:WebSocketSharp.Ext.IsLocal(System.Net.IPAddress):Parameters">
<dl>
<dt>
<i>address</i>
</dt>
<dd>
A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Net.IPAddress">System.Net.IPAddress</a> to test.
</dd>
</dl>
</blockquote>
<h4 class="Subsection">Returns</h4>
<blockquote class="SubsectionBox" id="M:WebSocketSharp.Ext.IsLocal(System.Net.IPAddress):Returns">
<tt>true</tt> if <i>address</i> represents a local IP address; otherwise, <tt>false</tt>.
</blockquote>
<h4 class="Subsection">Exceptions</h4>
<blockquote class="SubsectionBox" id="M:WebSocketSharp.Ext.IsLocal(System.Net.IPAddress):Exceptions">
<table class="TypeDocumentation">
<tr>
<th>Type</th>
<th>Reason</th>
</tr>
<tr valign="top">
<td>
<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentNullException">ArgumentNullException</a>
</td>
<td>
<i>address</i> is <tt>null</tt>.
</td>
</tr>
</table>
</blockquote>
<h2 class="Section">Remarks</h2>
<div class="SectionBox" id="M:WebSocketSharp.Ext.IsLocal(System.Net.IPAddress):Remarks">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</div>
<h2 class="Section">Requirements</h2>
<div class="SectionBox" id="M:WebSocketSharp.Ext.IsLocal(System.Net.IPAddress):Version Information">
<b>Namespace: </b>WebSocketSharp<br /><b>Assembly: </b>websocket-sharp (in websocket-sharp.dll)</div>
<hr size="1" />
</blockquote>
<h3 id="M:WebSocketSharp.Ext.IsNull``1(``0)">IsNull&lt;T&gt; Generic Method</h3>
<blockquote id="M:WebSocketSharp.Ext.IsNull``1(``0):member">
<p class="Summary">

View File

@@ -471,7 +471,7 @@
<a href="WebSocketSharp.Server/IServiceHost.html">IServiceHost</a>
</td>
<td>
Exposes the methods and property for the WebSocket service host.
Exposes the methods and property for the host that provides a <a href="./WebSocketSharp.Server/WebSocketService.html">WebSocketSharp.Server.WebSocketService</a>.
</td>
</tr>
<tr valign="top">

View File

@@ -100,6 +100,23 @@
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="IsValid">
<MemberSignature Language="C#" Value="public override bool IsValid { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance bool IsValid" />
<MemberType>Property</MemberType>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Docs>
<summary>
Gets a value indicating whether the WebSocket connection request is valid.
</summary>
<value>
<c>true</c> if the WebSocket connection request is valid; otherwise, <c>false</c>.
</value>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="Origin">
<MemberSignature Language="C#" Value="public override string Origin { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance string Origin" />
@@ -134,6 +151,23 @@
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="QueryString">
<MemberSignature Language="C#" Value="public override System.Collections.Specialized.NameValueCollection QueryString { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Specialized.NameValueCollection QueryString" />
<MemberType>Property</MemberType>
<ReturnValue>
<ReturnType>System.Collections.Specialized.NameValueCollection</ReturnType>
</ReturnValue>
<Docs>
<summary>
Gets the collection of query string variables used in the WebSocket opening handshake.
</summary>
<value>
A <see cref="T:System.Collections.Specialized.NameValueCollection" /> that contains the collection of query string variables.
</value>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="RequestUri">
<MemberSignature Language="C#" Value="public override Uri RequestUri { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance class System.Uri RequestUri" />

View File

@@ -109,6 +109,23 @@
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="IsValid">
<MemberSignature Language="C#" Value="public override bool IsValid { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance bool IsValid" />
<MemberType>Property</MemberType>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Docs>
<summary>
Gets a value indicating whether the WebSocket connection request is valid.
</summary>
<value>
<c>true</c> if the WebSocket connection request is valid; otherwise, <c>false</c>.
</value>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="Origin">
<MemberSignature Language="C#" Value="public override string Origin { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance string Origin" />
@@ -143,6 +160,23 @@
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="QueryString">
<MemberSignature Language="C#" Value="public override System.Collections.Specialized.NameValueCollection QueryString { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Specialized.NameValueCollection QueryString" />
<MemberType>Property</MemberType>
<ReturnValue>
<ReturnType>System.Collections.Specialized.NameValueCollection</ReturnType>
</ReturnValue>
<Docs>
<summary>
Gets the collection of query string variables used in the WebSocket opening handshake.
</summary>
<value>
A <see cref="T:System.Collections.Specialized.NameValueCollection" /> that contains the collection of query string variables.
</value>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="RequestUri">
<MemberSignature Language="C#" Value="public override Uri RequestUri { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance class System.Uri RequestUri" />

View File

@@ -114,6 +114,23 @@
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="IsValid">
<MemberSignature Language="C#" Value="public abstract bool IsValid { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance bool IsValid" />
<MemberType>Property</MemberType>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Docs>
<summary>
Gets a value indicating whether the WebSocket connection request is valid.
</summary>
<value>
<c>true</c> if the WebSocket connection request is valid; otherwise, <c>false</c>.
</value>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="Origin">
<MemberSignature Language="C#" Value="public abstract string Origin { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance string Origin" />
@@ -131,6 +148,23 @@
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="QueryString">
<MemberSignature Language="C#" Value="public abstract System.Collections.Specialized.NameValueCollection QueryString { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Specialized.NameValueCollection QueryString" />
<MemberType>Property</MemberType>
<ReturnValue>
<ReturnType>System.Collections.Specialized.NameValueCollection</ReturnType>
</ReturnValue>
<Docs>
<summary>
Gets the collection of query string variables used in the WebSocket opening handshake.
</summary>
<value>
A <see cref="T:System.Collections.Specialized.NameValueCollection" /> that contains the collection of query string variables.
</value>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="RequestUri">
<MemberSignature Language="C#" Value="public abstract Uri RequestUri { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance class System.Uri RequestUri" />

View File

@@ -214,8 +214,12 @@
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Docs>
<summary>To be added.</summary>
<value>To be added.</value>
<summary>
Gets a value indicating whether the request is sent from the local computer.
</summary>
<value>
<c>true</c> if the request is sent from the local computer; otherwise, <c>false</c>.
</value>
<remarks>To be added.</remarks>
</Docs>
</Member>
@@ -240,8 +244,12 @@
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Docs>
<summary>To be added.</summary>
<value>To be added.</value>
<summary>
Gets a value indicating whether the request is a WebSocket connection request.
</summary>
<value>
<c>true</c> if the request is a WebSocket connection request; otherwise, <c>false</c>.
</value>
<remarks>To be added.</remarks>
</Docs>
</Member>

View File

@@ -7,27 +7,27 @@
<Interfaces />
<Docs>
<summary>
Exposes the methods and property for the WebSocket service host.
Exposes the methods and property for the host that provides a <see cref="T:WebSocketSharp.Server.WebSocketService" />.
</summary>
<remarks />
</Docs>
<Members>
<Member MemberName="BindWebSocket">
<MemberSignature Language="C#" Value="public void BindWebSocket (WebSocketSharp.WebSocket socket);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void BindWebSocket(class WebSocketSharp.WebSocket socket) cil managed" />
<MemberSignature Language="C#" Value="public void BindWebSocket (WebSocketSharp.Net.WebSockets.WebSocketContext context);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void BindWebSocket(class WebSocketSharp.Net.WebSockets.WebSocketContext context) cil managed" />
<MemberType>Method</MemberType>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="socket" Type="WebSocketSharp.WebSocket" />
<Parameter Name="context" Type="WebSocketSharp.Net.WebSockets.WebSocketContext" />
</Parameters>
<Docs>
<param name="socket">
A <see cref="T:WebSocketSharp.WebSocket" /> to bind.
<param name="context">
A <see cref="T:WebSocketSharp.Net.WebSockets.WebSocketContext" /> that contains the WebSocket connection request objects to bind.
</param>
<summary>
Binds the specified <see cref="T:WebSocketSharp.WebSocket" /> to the WebSocket service instance.
Binds the specified <see cref="T:WebSocketSharp.Net.WebSockets.WebSocketContext" /> to a <see cref="T:WebSocketSharp.Server.WebSocketService" /> instance.
</summary>
<remarks>To be added.</remarks>
</Docs>

View File

@@ -150,7 +150,7 @@
A <see cref="T:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext" /> that contains the WebSocket connection request objects.
</param>
<summary>
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
</summary>
<remarks>To be added.</remarks>
</Docs>

View File

@@ -112,7 +112,7 @@
A <see cref="T:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext" /> that contains the WebSocket connection request objects.
</param>
<summary>
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
</summary>
<remarks>To be added.</remarks>
</Docs>

View File

@@ -327,10 +327,10 @@
</ReturnValue>
<Docs>
<summary>
Gets the HTTP query string variables used in the WebSocket opening handshake.
Gets the collection of query string variables used in the WebSocket opening handshake.
</summary>
<value>
A <see cref="T:System.Collections.Specialized.NameValueCollection" /> that contains the query string variables.
A <see cref="T:System.Collections.Specialized.NameValueCollection" /> that contains the collection of query string variables.
</value>
<remarks>To be added.</remarks>
</Docs>
@@ -434,10 +434,10 @@
</ReturnValue>
<Docs>
<summary>
Gets the sessions to the WebSocket service.
Gets the sessions to the <see cref="T:WebSocketSharp.Server.WebSocketService" />.
</summary>
<value>
A <see cref="T:WebSocketSharp.Server.WebSocketServiceManager" /> that contains the sessions to the WebSocket service.
A <see cref="T:WebSocketSharp.Server.WebSocketServiceManager" /> that contains the sessions to the the <see cref="T:WebSocketSharp.Server.WebSocketService" />.
</value>
<remarks>To be added.</remarks>
</Docs>

View File

@@ -209,7 +209,7 @@
A <see cref="T:WebSocketSharp.Net.WebSockets.TcpListenerWebSocketContext" /> that contains the WebSocket connection request objects.
</param>
<summary>
Accepts a WebSocket connection.
Accepts a WebSocket connection request.
</summary>
<remarks>To be added.</remarks>
</Docs>
@@ -309,21 +309,21 @@
</Docs>
</Member>
<Member MemberName="WebSocketSharp.Server.IServiceHost.BindWebSocket">
<MemberSignature Language="C#" Value="void IServiceHost.BindWebSocket (WebSocketSharp.WebSocket socket);" />
<MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void WebSocketSharp.Server.IServiceHost.BindWebSocket(class WebSocketSharp.WebSocket socket) cil managed" />
<MemberSignature Language="C#" Value="void IServiceHost.BindWebSocket (WebSocketSharp.Net.WebSockets.WebSocketContext context);" />
<MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void WebSocketSharp.Server.IServiceHost.BindWebSocket(class WebSocketSharp.Net.WebSockets.WebSocketContext context) cil managed" />
<MemberType>Method</MemberType>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="socket" Type="WebSocketSharp.WebSocket" />
<Parameter Name="context" Type="WebSocketSharp.Net.WebSockets.WebSocketContext" />
</Parameters>
<Docs>
<param name="socket">
A <see cref="T:WebSocketSharp.WebSocket" /> to bind.
<param name="context">
A <see cref="T:WebSocketSharp.Net.WebSockets.WebSocketContext" /> that contains the WebSocket connection request objects to bind.
</param>
<summary>
Binds the specified <see cref="T:WebSocketSharp.WebSocket" /> to the WebSocket service instance.
Binds the specified <see cref="T:WebSocketSharp.Net.WebSockets.WebSocketContext" /> to a <see cref="T:WebSocketSharp.Server.WebSocketService" /> instance.
</summary>
<remarks>To be added.</remarks>
</Docs>

View File

@@ -431,6 +431,32 @@
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="IsLocal">
<MemberSignature Language="C#" Value="public static bool IsLocal (this System.Net.IPAddress address);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsLocal(class System.Net.IPAddress address) cil managed" />
<MemberType>Method</MemberType>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="address" Type="System.Net.IPAddress" RefType="this" />
</Parameters>
<Docs>
<param name="address">
A <see cref="T:System.Net.IPAddress" /> to test.
</param>
<summary>
Determines whether the specified <see cref="T:System.Net.IPAddress" /> represents a local IP address.
</summary>
<returns>
<c>true</c> if <paramref name="address" /> represents a local IP address; otherwise, <c>false</c>.
</returns>
<remarks>To be added.</remarks>
<exception cref="T:System.ArgumentNullException">
<paramref name="address" /> is <see langword="null" />.
</exception>
</Docs>
</Member>
<Member MemberName="IsNull&lt;T&gt;">
<MemberSignature Language="C#" Value="public static bool IsNull&lt;T&gt; (this T obj) where T : class;" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsNull&lt;class T&gt;(!!T obj) cil managed" />

View File

@@ -1,6 +1,6 @@
<Overview>
<Assemblies>
<Assembly Name="websocket-sharp" Version="1.0.2.29254">
<Assembly Name="websocket-sharp" Version="1.0.2.20635">
<AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 11 00 00 00 29 17 fb 89 fe c3 91 f7 2b cb 8b e2 61 d2 3f 05 93 6d 65 a8 9e 63 72 a6 f5 d5 2c f2 9d 20 fa 0b c0 70 6a f6 88 7e 8b 90 3f 39 f5 76 c8 48 e0 bb 7b b2 7b ed d3 10 a7 1a 0f 70 98 0f 7f f4 4b 53 09 d2 a5 ef 36 c3 56 b4 aa f0 91 72 63 25 07 89 e0 93 3e 3f 2e f2 b9 73 0e 12 15 5d 43 56 c3 f4 70 a5 89 fe f7 f6 ac 3e 77 c2 d8 d0 84 91 f4 0c d1 f3 8e dc c3 c3 b8 38 3d 0c bf 17 de 20 78 c1 ]</AssemblyPublicKey>
<Attributes>
<Attribute>
@@ -525,6 +525,31 @@
<Link Type="WebSocketSharp.Ext" Member="M:WebSocketSharp.Ext.IsHostOrder(WebSocketSharp.ByteOrder)" />
</Member>
</ExtensionMethod>
<ExtensionMethod>
<Targets>
<Target Type="T:System.Net.IPAddress" />
</Targets>
<Member MemberName="IsLocal">
<MemberSignature Language="C#" Value="public static bool IsLocal (this System.Net.IPAddress address);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsLocal(class System.Net.IPAddress address) cil managed" />
<MemberType>ExtensionMethod</MemberType>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="address" Type="System.Net.IPAddress" RefType="this" />
</Parameters>
<Docs>
<param name="address">
A <see cref="T:System.Net.IPAddress" /> to test.
</param>
<summary>
Determines whether the specified <see cref="T:System.Net.IPAddress" /> represents a local IP address.
</summary>
</Docs>
<Link Type="WebSocketSharp.Ext" Member="M:WebSocketSharp.Ext.IsLocal(System.Net.IPAddress)" />
</Member>
</ExtensionMethod>
<ExtensionMethod>
<Targets>
<Target Type="System.Object" />

Binary file not shown.