Added GetWebSocketStream method to HttpConnection class
This commit is contained in:
parent
fdf413545e
commit
e20c3df551
@ -72,11 +72,13 @@ namespace WebSocketSharp.Net
|
||||
private ListenerPrefix _prefix;
|
||||
private MemoryStream _requestBuffer;
|
||||
private int _reuses;
|
||||
private bool _secure;
|
||||
private Socket _socket;
|
||||
private Stream _stream;
|
||||
private object _sync;
|
||||
private int _timeout;
|
||||
private Timer _timer;
|
||||
private WebSocketStream _websocketStream;
|
||||
|
||||
#endregion
|
||||
|
||||
@ -86,9 +88,10 @@ namespace WebSocketSharp.Net
|
||||
{
|
||||
_socket = socket;
|
||||
_listener = listener;
|
||||
_secure = listener.IsSecure;
|
||||
|
||||
var netStream = new NetworkStream (socket, false);
|
||||
if (listener.IsSecure) {
|
||||
if (_secure) {
|
||||
var sslStream = new SslStream (netStream, false);
|
||||
sslStream.AuthenticateAsServer (listener.Certificate);
|
||||
_stream = sslStream;
|
||||
@ -116,7 +119,7 @@ namespace WebSocketSharp.Net
|
||||
|
||||
public bool IsSecure {
|
||||
get {
|
||||
return _listener.IsSecure;
|
||||
return _secure;
|
||||
}
|
||||
}
|
||||
|
||||
@ -200,6 +203,9 @@ namespace WebSocketSharp.Net
|
||||
if (_stream == null)
|
||||
return;
|
||||
|
||||
_inputStream = null;
|
||||
_websocketStream = null;
|
||||
|
||||
_stream.Dispose ();
|
||||
_stream = null;
|
||||
}
|
||||
@ -510,6 +516,20 @@ namespace WebSocketSharp.Net
|
||||
}
|
||||
}
|
||||
|
||||
public WebSocketStream GetWebSocketStream ()
|
||||
{
|
||||
if (_websocketStream != null || _socket == null)
|
||||
return _websocketStream;
|
||||
|
||||
lock (_sync) {
|
||||
if (_socket == null)
|
||||
return _websocketStream;
|
||||
|
||||
_websocketStream = new WebSocketStream (_stream, _secure);
|
||||
return _websocketStream;
|
||||
}
|
||||
}
|
||||
|
||||
public void SendError ()
|
||||
{
|
||||
SendError (_context.ErrorMessage, _context.ErrorStatus);
|
||||
|
@ -44,7 +44,6 @@ namespace WebSocketSharp.Net.WebSockets
|
||||
#region Private Fields
|
||||
|
||||
private HttpListenerContext _context;
|
||||
private WebSocketStream _stream;
|
||||
private WebSocket _websocket;
|
||||
|
||||
#endregion
|
||||
@ -55,7 +54,6 @@ namespace WebSocketSharp.Net.WebSockets
|
||||
HttpListenerContext context, string protocol, Logger logger)
|
||||
{
|
||||
_context = context;
|
||||
_stream = WebSocketStream.CreateServerStream (context);
|
||||
_websocket = new WebSocket (this, protocol, logger);
|
||||
}
|
||||
|
||||
@ -65,7 +63,7 @@ namespace WebSocketSharp.Net.WebSockets
|
||||
|
||||
internal WebSocketStream Stream {
|
||||
get {
|
||||
return _stream;
|
||||
return _context.Connection.GetWebSocketStream ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -141,7 +139,7 @@ namespace WebSocketSharp.Net.WebSockets
|
||||
/// </value>
|
||||
public override bool IsSecureConnection {
|
||||
get {
|
||||
return _context.Request.IsSecureConnection;
|
||||
return _context.Connection.IsSecure;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -239,12 +239,6 @@ namespace WebSocketSharp
|
||||
return new WebSocketStream (netStream);
|
||||
}
|
||||
|
||||
public static WebSocketStream CreateServerStream (HttpListenerContext context)
|
||||
{
|
||||
var conn = context.Connection;
|
||||
return new WebSocketStream (conn.Stream, conn.IsSecure);
|
||||
}
|
||||
|
||||
public void Dispose ()
|
||||
{
|
||||
_innerStream.Dispose ();
|
||||
|
Loading…
Reference in New Issue
Block a user