From 0e2a5ae7db26f53e0206560a388b24dd5d225ae3 Mon Sep 17 00:00:00 2001 From: sta Date: Thu, 12 Jan 2017 16:59:38 +0900 Subject: [PATCH] [Modify] Add them --- .../Server/WebSocketSessionManager.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/websocket-sharp/Server/WebSocketSessionManager.cs b/websocket-sharp/Server/WebSocketSessionManager.cs index 88271994..b910c18f 100644 --- a/websocket-sharp/Server/WebSocketSessionManager.cs +++ b/websocket-sharp/Server/WebSocketSessionManager.cs @@ -290,6 +290,23 @@ namespace WebSocketSharp.Server _sweepTimer.Elapsed += (sender, e) => Sweep (); } + private void stop (PayloadData payloadData, bool send) + { + var bytes = send + ? WebSocketFrame.CreateCloseFrame (payloadData, false).ToArray () + : null; + + lock (_sync) { + _state = ServerState.ShuttingDown; + + _sweepTimer.Enabled = false; + foreach (var session in _sessions.Values.ToList ()) + session.Context.WebSocket.Close (payloadData, bytes); + + _state = ServerState.Stop; + } + } + private bool tryGetSession (string id, out IWebSocketSession session) { bool ret; @@ -368,6 +385,16 @@ namespace WebSocketSharp.Server } } + internal void Stop (ushort code, string reason) + { + if (code == 1005) { // == no status + stop (PayloadData.Empty, true); + return; + } + + stop (new PayloadData (code, reason), !code.IsReserved ()); + } + internal void Stop (CloseEventArgs e, byte[] frameAsBytes, bool receive) { lock (_sync) {