diff --git a/websocket-sharp/Net/HttpListenerContext.cs b/websocket-sharp/Net/HttpListenerContext.cs index eac93fb5..643465cc 100644 --- a/websocket-sharp/Net/HttpListenerContext.cs +++ b/websocket-sharp/Net/HttpListenerContext.cs @@ -240,6 +240,30 @@ namespace WebSocketSharp.Net return true; } + internal HttpListenerWebSocketContext GetWebSocketContext (string protocol) + { + if (_websocketContext != null) + return _websocketContext; + + if (protocol != null) { + if (protocol.Length == 0) { + var msg = "An empty string."; + + throw new ArgumentException (msg, "protocol"); + } + + if (!protocol.IsToken ()) { + var msg = "It contains an invalid character."; + + throw new ArgumentException (msg, "protocol"); + } + } + + _websocketContext = new HttpListenerWebSocketContext (this, protocol); + + return _websocketContext; + } + internal bool Register () { return _listener.RegisterContext (this);