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