Added the public WebSocket.Accept and AcceptAsync methods
This commit is contained in:
parent
745da21631
commit
8efe37eb2f
@ -366,7 +366,7 @@ namespace WebSocketSharp.Server
|
|||||||
_websocket.OnError += onError;
|
_websocket.OnError += onError;
|
||||||
_websocket.OnClose += onClose;
|
_websocket.OnClose += onClose;
|
||||||
|
|
||||||
_websocket.Accept ();
|
_websocket.InternalAccept ();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -655,6 +655,13 @@ namespace WebSocketSharp
|
|||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string checkIfCanAccept ()
|
||||||
|
{
|
||||||
|
return _client
|
||||||
|
? "This operation isn't available as a client."
|
||||||
|
: _readyState.CheckIfCanAccept ();
|
||||||
|
}
|
||||||
|
|
||||||
private string checkIfCanConnect ()
|
private string checkIfCanConnect ()
|
||||||
{
|
{
|
||||||
return !_client && _readyState == WebSocketState.Closed
|
return !_client && _readyState == WebSocketState.Closed
|
||||||
@ -1562,20 +1569,6 @@ namespace WebSocketSharp
|
|||||||
|
|
||||||
#region Internal Methods
|
#region Internal Methods
|
||||||
|
|
||||||
// As server
|
|
||||||
internal void Accept ()
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
if (acceptHandshake ()) {
|
|
||||||
_readyState = WebSocketState.Open;
|
|
||||||
open ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex) {
|
|
||||||
processException (ex, "An exception has occurred while accepting.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static string CheckCloseParameters (ushort code, string reason, bool client)
|
internal static string CheckCloseParameters (ushort code, string reason, bool client)
|
||||||
{
|
{
|
||||||
return !code.IsCloseStatusCode ()
|
return !code.IsCloseStatusCode ()
|
||||||
@ -1669,6 +1662,20 @@ namespace WebSocketSharp
|
|||||||
return Convert.ToBase64String (src);
|
return Convert.ToBase64String (src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// As server
|
||||||
|
internal void InternalAccept ()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if (acceptHandshake ()) {
|
||||||
|
_readyState = WebSocketState.Open;
|
||||||
|
open ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
processException (ex, "An exception has occurred while accepting.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal bool Ping (byte[] frameAsBytes, TimeSpan timeout)
|
internal bool Ping (byte[] frameAsBytes, TimeSpan timeout)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
@ -1743,6 +1750,56 @@ namespace WebSocketSharp
|
|||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Accepts the WebSocket connection request.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// This method isn't available as a client.
|
||||||
|
/// </remarks>
|
||||||
|
public void Accept ()
|
||||||
|
{
|
||||||
|
var msg = checkIfCanAccept ();
|
||||||
|
if (msg != null) {
|
||||||
|
_logger.Error (msg);
|
||||||
|
error ("An error has occurred in accepting.", null);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (accept ())
|
||||||
|
open ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Accepts the WebSocket connection request asynchronously.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// <para>
|
||||||
|
/// This method doesn't wait for the accept to be complete.
|
||||||
|
/// </para>
|
||||||
|
/// <para>
|
||||||
|
/// This method isn't available as a client.
|
||||||
|
/// </para>
|
||||||
|
/// </remarks>
|
||||||
|
public void AcceptAsync ()
|
||||||
|
{
|
||||||
|
var msg = checkIfCanAccept ();
|
||||||
|
if (msg != null) {
|
||||||
|
_logger.Error (msg);
|
||||||
|
error ("An error has occurred in accepting.", null);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Func<bool> acceptor = accept;
|
||||||
|
acceptor.BeginInvoke (
|
||||||
|
ar => {
|
||||||
|
if (acceptor.EndInvoke (ar))
|
||||||
|
open ();
|
||||||
|
},
|
||||||
|
null);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Closes the WebSocket connection, and releases all associated resources.
|
/// Closes the WebSocket connection, and releases all associated resources.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user