diff --git a/websocket-sharp/Server/WebSocketBehavior.cs b/websocket-sharp/Server/WebSocketBehavior.cs
index ffc176b5..c0ea719b 100644
--- a/websocket-sharp/Server/WebSocketBehavior.cs
+++ b/websocket-sharp/Server/WebSocketBehavior.cs
@@ -317,7 +317,10 @@ namespace WebSocketSharp.Server
_websocket = context.WebSocket;
_websocket.CustomHandshakeRequestChecker = checkIfValidConnectionRequest;
_websocket.Protocol = _protocol;
- _websocket.WaitTime = sessions.WaitTime;
+
+ var waitTime = sessions.WaitTime;
+ if (waitTime != _websocket.WaitTime)
+ _websocket.WaitTime = waitTime;
_websocket.OnOpen += onOpen;
_websocket.OnMessage += onMessage;
diff --git a/websocket-sharp/WebSocket.cs b/websocket-sharp/WebSocket.cs
index 4511257e..2ed6259e 100644
--- a/websocket-sharp/WebSocket.cs
+++ b/websocket-sharp/WebSocket.cs
@@ -226,16 +226,6 @@ namespace WebSocketSharp
}
}
- internal TimeSpan WaitTime {
- get {
- return _waitTime;
- }
-
- set {
- _waitTime = value;
- }
- }
-
#endregion
#region Public Properties
@@ -481,6 +471,34 @@ namespace WebSocketSharp
}
}
+ ///
+ /// Gets or sets the wait time for the response to the Ping or Close.
+ ///
+ ///
+ /// A that represents the wait time. The default value is
+ /// the same as 5 seconds, or 1 second if the is used by
+ /// a server.
+ ///
+ public TimeSpan WaitTime {
+ get {
+ return _waitTime;
+ }
+
+ set {
+ lock (_forConn) {
+ var msg = checkIfAvailable (true, false) ?? value.CheckIfValidWaitTime ();
+ if (msg != null) {
+ _logger.Error (msg);
+ error ("An error has occurred in setting the wait time.", null);
+
+ return;
+ }
+
+ _waitTime = value;
+ }
+ }
+ }
+
#endregion
#region Public Events
@@ -535,11 +553,11 @@ namespace WebSocketSharp
return sendHttpResponse (createHandshakeResponse ());
}
- private string checkIfAvailable (bool availableAsServer, bool availableAsConnected)
+ private string checkIfAvailable (bool asServer, bool asConnected)
{
- return !_client && !availableAsServer
+ return !_client && !asServer
? "This operation isn't available as a server."
- : !availableAsConnected
+ : !asConnected
? _readyState.CheckIfConnectable ()
: null;
}