Modified closing and ping
This commit is contained in:
@@ -321,7 +321,7 @@ namespace WebSocketSharp.Server
|
||||
}
|
||||
|
||||
_listening = false;
|
||||
_serviceHosts.Stop (((ushort) CloseStatusCode.SERVER_ERROR).ToByteArray (ByteOrder.BIG));
|
||||
_serviceHosts.Stop (((ushort) CloseStatusCode.SERVER_ERROR).ToByteArray (ByteOrder.BIG), true);
|
||||
_listener.Abort ();
|
||||
|
||||
_state = ServerState.STOP;
|
||||
@@ -617,7 +617,7 @@ namespace WebSocketSharp.Server
|
||||
_state = ServerState.SHUTDOWN;
|
||||
}
|
||||
|
||||
_serviceHosts.Stop ();
|
||||
_serviceHosts.Stop (new byte []{}, true);
|
||||
stopListener ();
|
||||
|
||||
_state = ServerState.STOP;
|
||||
@@ -651,7 +651,7 @@ namespace WebSocketSharp.Server
|
||||
_state = ServerState.SHUTDOWN;
|
||||
}
|
||||
|
||||
_serviceHosts.Stop (data);
|
||||
_serviceHosts.Stop (data, !code.IsReserved ());
|
||||
stopListener ();
|
||||
|
||||
_state = ServerState.STOP;
|
||||
@@ -685,7 +685,7 @@ namespace WebSocketSharp.Server
|
||||
_state = ServerState.SHUTDOWN;
|
||||
}
|
||||
|
||||
_serviceHosts.Stop (data);
|
||||
_serviceHosts.Stop (data, !code.IsReserved ());
|
||||
stopListener ();
|
||||
|
||||
_state = ServerState.STOP;
|
||||
|
@@ -201,7 +201,7 @@ namespace WebSocketSharp.Server
|
||||
}
|
||||
|
||||
StopListener ();
|
||||
_serviceHosts.Stop (((ushort) CloseStatusCode.SERVER_ERROR).ToByteArray (ByteOrder.BIG));
|
||||
_serviceHosts.Stop (((ushort) CloseStatusCode.SERVER_ERROR).ToByteArray (ByteOrder.BIG), true);
|
||||
|
||||
_state = ServerState.STOP;
|
||||
}
|
||||
@@ -313,7 +313,7 @@ namespace WebSocketSharp.Server
|
||||
base.Start ();
|
||||
if (!IsListening)
|
||||
{
|
||||
_serviceHosts.Stop ();
|
||||
_serviceHosts.Stop (new byte []{}, false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -339,7 +339,7 @@ namespace WebSocketSharp.Server
|
||||
}
|
||||
|
||||
base.Stop ();
|
||||
_serviceHosts.Stop ();
|
||||
_serviceHosts.Stop (new byte []{}, true);
|
||||
|
||||
_state = ServerState.STOP;
|
||||
}
|
||||
@@ -373,7 +373,7 @@ namespace WebSocketSharp.Server
|
||||
}
|
||||
|
||||
base.Stop ();
|
||||
_serviceHosts.Stop (data);
|
||||
_serviceHosts.Stop (data, !code.IsReserved ());
|
||||
|
||||
_state = ServerState.STOP;
|
||||
}
|
||||
@@ -407,7 +407,7 @@ namespace WebSocketSharp.Server
|
||||
}
|
||||
|
||||
base.Stop ();
|
||||
_serviceHosts.Stop (data);
|
||||
_serviceHosts.Stop (data, !code.IsReserved ());
|
||||
|
||||
_state = ServerState.STOP;
|
||||
}
|
||||
|
@@ -294,7 +294,7 @@ namespace WebSocketSharp.Server
|
||||
}
|
||||
|
||||
StopListener ();
|
||||
_sessions.Stop (((ushort) CloseStatusCode.SERVER_ERROR).ToByteArray (ByteOrder.BIG));
|
||||
_sessions.Stop (((ushort) CloseStatusCode.SERVER_ERROR).ToByteArray (ByteOrder.BIG), true);
|
||||
|
||||
_state = ServerState.STOP;
|
||||
}
|
||||
@@ -346,7 +346,7 @@ namespace WebSocketSharp.Server
|
||||
base.Start ();
|
||||
if (!IsListening)
|
||||
{
|
||||
_sessions.Stop ();
|
||||
_sessions.Stop (new byte []{}, false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -372,7 +372,7 @@ namespace WebSocketSharp.Server
|
||||
}
|
||||
|
||||
base.Stop ();
|
||||
_sessions.Stop ();
|
||||
_sessions.Stop (new byte []{}, true);
|
||||
|
||||
_state = ServerState.STOP;
|
||||
}
|
||||
@@ -406,7 +406,7 @@ namespace WebSocketSharp.Server
|
||||
}
|
||||
|
||||
base.Stop ();
|
||||
_sessions.Stop (data);
|
||||
_sessions.Stop (data, !code.IsReserved ());
|
||||
|
||||
_state = ServerState.STOP;
|
||||
}
|
||||
@@ -440,7 +440,7 @@ namespace WebSocketSharp.Server
|
||||
}
|
||||
|
||||
base.Stop ();
|
||||
_sessions.Stop (data);
|
||||
_sessions.Stop (data, !code.IsReserved ());
|
||||
|
||||
_state = ServerState.STOP;
|
||||
}
|
||||
|
@@ -195,7 +195,7 @@ namespace WebSocketSharp.Server
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private Dictionary<string, Dictionary<string, bool>> broadping (byte [] data)
|
||||
private Dictionary<string, Dictionary<string, bool>> broadping (byte [] frameAsBytes, int timeOut)
|
||||
{
|
||||
var result = new Dictionary<string, Dictionary<string, bool>> ();
|
||||
foreach (var host in ServiceHosts)
|
||||
@@ -203,7 +203,7 @@ namespace WebSocketSharp.Server
|
||||
if (_state != ServerState.START)
|
||||
break;
|
||||
|
||||
result.Add (host.ServicePath, host.Sessions.BroadpingInternally (data));
|
||||
result.Add (host.ServicePath, host.Sessions.BroadpingInternally (frameAsBytes, timeOut));
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -250,7 +250,7 @@ namespace WebSocketSharp.Server
|
||||
}
|
||||
|
||||
if (host.Sessions.State == ServerState.START)
|
||||
host.Sessions.Stop (((ushort) CloseStatusCode.AWAY).ToByteArray (ByteOrder.BIG));
|
||||
host.Sessions.Stop (((ushort) CloseStatusCode.AWAY).ToByteArray (ByteOrder.BIG), true);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -266,28 +266,23 @@ namespace WebSocketSharp.Server
|
||||
}
|
||||
}
|
||||
|
||||
internal void Stop ()
|
||||
internal void Stop (byte [] data, bool send)
|
||||
{
|
||||
lock (_sync)
|
||||
{
|
||||
_state = ServerState.SHUTDOWN;
|
||||
|
||||
var payload = new PayloadData (data);
|
||||
var args = new CloseEventArgs (payload);
|
||||
var frameAsBytes = send
|
||||
? WsFrame.CreateCloseFrame (Mask.UNMASK, payload).ToByteArray ()
|
||||
: null;
|
||||
|
||||
foreach (var host in _serviceHosts.Values)
|
||||
host.Sessions.Stop ();
|
||||
host.Sessions.Stop (args, frameAsBytes);
|
||||
|
||||
_serviceHosts.Clear ();
|
||||
_state = ServerState.STOP;
|
||||
}
|
||||
}
|
||||
|
||||
internal void Stop (byte [] data)
|
||||
{
|
||||
lock (_sync)
|
||||
{
|
||||
_state = ServerState.SHUTDOWN;
|
||||
foreach (var host in _serviceHosts.Values)
|
||||
host.Sessions.Stop (data);
|
||||
|
||||
_serviceHosts.Clear ();
|
||||
_state = ServerState.STOP;
|
||||
}
|
||||
}
|
||||
@@ -430,7 +425,7 @@ namespace WebSocketSharp.Server
|
||||
return null;
|
||||
}
|
||||
|
||||
return broadping (new byte [] {});
|
||||
return broadping (WsFrame.CreatePingFrame (Mask.UNMASK).ToByteArray (), 1000);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -459,7 +454,7 @@ namespace WebSocketSharp.Server
|
||||
return null;
|
||||
}
|
||||
|
||||
return broadping (data);
|
||||
return broadping (WsFrame.CreatePingFrame (Mask.UNMASK, data).ToByteArray (), 1000);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -489,7 +484,7 @@ namespace WebSocketSharp.Server
|
||||
return null;
|
||||
}
|
||||
|
||||
return host.Sessions.BroadpingInternally (new byte [] {});
|
||||
return host.Sessions.BroadpingInternally ();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -527,7 +522,8 @@ namespace WebSocketSharp.Server
|
||||
return null;
|
||||
}
|
||||
|
||||
return host.Sessions.BroadpingInternally (data);
|
||||
return host.Sessions.BroadpingInternally (
|
||||
WsFrame.CreatePingFrame (Mask.UNMASK, data).ToByteArray (), 1000);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@@ -106,7 +106,7 @@ namespace WebSocketSharp.Server
|
||||
/// </value>
|
||||
public IEnumerable<string> ActiveIDs {
|
||||
get {
|
||||
return from result in BroadpingInternally (new byte [] {})
|
||||
return from result in BroadpingInternally ()
|
||||
where result.Value
|
||||
select result.Key;
|
||||
}
|
||||
@@ -150,7 +150,7 @@ namespace WebSocketSharp.Server
|
||||
/// </value>
|
||||
public IEnumerable<string> InactiveIDs {
|
||||
get {
|
||||
return from result in BroadpingInternally (new byte [] {})
|
||||
return from result in BroadpingInternally ()
|
||||
where !result.Value
|
||||
select result.Key;
|
||||
}
|
||||
@@ -282,7 +282,12 @@ namespace WebSocketSharp.Server
|
||||
services.Current.SendAsync (data, completed);
|
||||
}
|
||||
|
||||
internal Dictionary<string, bool> BroadpingInternally (byte [] data)
|
||||
internal Dictionary<string, bool> BroadpingInternally ()
|
||||
{
|
||||
return BroadpingInternally (WsFrame.CreatePingFrame (Mask.UNMASK).ToByteArray (), 1000);
|
||||
}
|
||||
|
||||
internal Dictionary<string, bool> BroadpingInternally (byte [] frameAsBytes, int timeOut)
|
||||
{
|
||||
var result = new Dictionary<string, bool> ();
|
||||
foreach (var session in ServiceInstances)
|
||||
@@ -290,7 +295,7 @@ namespace WebSocketSharp.Server
|
||||
if (_state != ServerState.START)
|
||||
break;
|
||||
|
||||
result.Add (session.ID, session.Context.WebSocket.Ping (data));
|
||||
result.Add (session.ID, session.Context.WebSocket.Ping (frameAsBytes, timeOut));
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -310,21 +315,18 @@ namespace WebSocketSharp.Server
|
||||
_state = ServerState.START;
|
||||
}
|
||||
|
||||
internal void Stop ()
|
||||
internal void Stop (byte [] data, bool send)
|
||||
{
|
||||
lock (_sync)
|
||||
{
|
||||
_state = ServerState.SHUTDOWN;
|
||||
var payload = new PayloadData (data);
|
||||
var args = new CloseEventArgs (payload);
|
||||
var frameAsBytes = send
|
||||
? WsFrame.CreateCloseFrame (Mask.UNMASK, payload).ToByteArray ()
|
||||
: null;
|
||||
|
||||
_sweepTimer.Enabled = false;
|
||||
foreach (var session in _sessions.Values.ToList ())
|
||||
session.Context.WebSocket.Close ();
|
||||
|
||||
_state = ServerState.STOP;
|
||||
}
|
||||
Stop (args, frameAsBytes);
|
||||
}
|
||||
|
||||
internal void Stop (byte [] data)
|
||||
internal void Stop (CloseEventArgs args, byte [] frameAsBytes)
|
||||
{
|
||||
lock (_sync)
|
||||
{
|
||||
@@ -332,7 +334,7 @@ namespace WebSocketSharp.Server
|
||||
|
||||
_sweepTimer.Enabled = false;
|
||||
foreach (var session in _sessions.Values.ToList ())
|
||||
session.Context.WebSocket.Close (data);
|
||||
session.Context.WebSocket.Close (args, frameAsBytes, 1000);
|
||||
|
||||
_state = ServerState.STOP;
|
||||
}
|
||||
@@ -402,7 +404,7 @@ namespace WebSocketSharp.Server
|
||||
return null;
|
||||
}
|
||||
|
||||
return BroadpingInternally (new byte [] {});
|
||||
return BroadpingInternally ();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -428,7 +430,7 @@ namespace WebSocketSharp.Server
|
||||
return null;
|
||||
}
|
||||
|
||||
return BroadpingInternally (data);
|
||||
return BroadpingInternally (WsFrame.CreatePingFrame (Mask.UNMASK, data).ToByteArray (), 1000);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
Reference in New Issue
Block a user