Modified WebSocket.cs
This commit is contained in:
parent
876a017ff0
commit
b3f6aa2ebf
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -719,10 +719,10 @@ namespace WebSocketSharp {
|
||||
|
||||
private string createResponseKey()
|
||||
{
|
||||
var buffer = new StringBuilder(_base64key, 64);
|
||||
buffer.Append(_guid);
|
||||
SHA1 sha1 = new SHA1CryptoServiceProvider();
|
||||
var sb = new StringBuilder(_base64key);
|
||||
sb.Append(_guid);
|
||||
var src = sha1.ComputeHash(Encoding.UTF8.GetBytes(sb.ToString()));
|
||||
var src = sha1.ComputeHash(Encoding.UTF8.GetBytes(buffer.ToString()));
|
||||
|
||||
return Convert.ToBase64String(src);
|
||||
}
|
||||
@ -1169,46 +1169,47 @@ namespace WebSocketSharp {
|
||||
|
||||
private bool send(WsFrame frame)
|
||||
{
|
||||
if (!isOpened(false))
|
||||
if (_readyState == WsState.CONNECTING || _readyState == WsState.CLOSED)
|
||||
{
|
||||
onError("The WebSocket connection isn't established or has been closed.");
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (_wsStream == null)
|
||||
return false;
|
||||
|
||||
_wsStream.Write(frame);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
onError(ex.Message);
|
||||
return false;
|
||||
}
|
||||
return _wsStream != null
|
||||
? _wsStream.Write(frame)
|
||||
: false;
|
||||
}
|
||||
|
||||
private void send(Opcode opcode, Stream stream)
|
||||
{
|
||||
if (_compression == CompressionMethod.NONE)
|
||||
var data = stream;
|
||||
var compressed = false;
|
||||
try
|
||||
{
|
||||
send(opcode, stream, false);
|
||||
return;
|
||||
if (_compression != CompressionMethod.NONE)
|
||||
{
|
||||
data = data.Compress(_compression);
|
||||
compressed = true;
|
||||
}
|
||||
|
||||
using (var compressed = stream.Compress(_compression))
|
||||
send(opcode, data, compressed);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
send(opcode, compressed, true);
|
||||
onError(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (compressed)
|
||||
data.Dispose();
|
||||
|
||||
stream.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void send(Opcode opcode, Stream stream, bool compressed)
|
||||
{
|
||||
lock (_forSend)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (_readyState != WsState.OPEN)
|
||||
{
|
||||
@ -1222,11 +1223,6 @@ namespace WebSocketSharp {
|
||||
else
|
||||
sendFragmented(opcode, stream, compressed);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
onError(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool send(Fin fin, Opcode opcode, byte[] data, bool compressed)
|
||||
@ -1237,12 +1233,12 @@ namespace WebSocketSharp {
|
||||
|
||||
private void sendAsync(Opcode opcode, Stream stream, Action completed)
|
||||
{
|
||||
Action<Opcode, Stream> action = send;
|
||||
AsyncCallback callback = (ar) =>
|
||||
Action<Opcode, Stream> sender = send;
|
||||
AsyncCallback callback = ar =>
|
||||
{
|
||||
try
|
||||
{
|
||||
action.EndInvoke(ar);
|
||||
sender.EndInvoke(ar);
|
||||
if (completed != null)
|
||||
completed();
|
||||
}
|
||||
@ -1250,13 +1246,9 @@ namespace WebSocketSharp {
|
||||
{
|
||||
onError(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
stream.Close();
|
||||
}
|
||||
};
|
||||
|
||||
action.BeginInvoke(opcode, stream, callback, null);
|
||||
sender.BeginInvoke(opcode, stream, callback, null);
|
||||
}
|
||||
|
||||
private long sendFragmented(Opcode opcode, Stream stream, bool compressed)
|
||||
@ -1519,10 +1511,8 @@ namespace WebSocketSharp {
|
||||
return;
|
||||
}
|
||||
|
||||
using (var ms = new MemoryStream(data))
|
||||
{
|
||||
send(Opcode.BINARY, ms);
|
||||
}
|
||||
var stream = new MemoryStream(data);
|
||||
send(Opcode.BINARY, stream);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -1539,10 +1529,8 @@ namespace WebSocketSharp {
|
||||
return;
|
||||
}
|
||||
|
||||
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(data)))
|
||||
{
|
||||
send(Opcode.TEXT, ms);
|
||||
}
|
||||
var stream = new MemoryStream(Encoding.UTF8.GetBytes(data));
|
||||
send(Opcode.TEXT, stream);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -1559,10 +1547,7 @@ namespace WebSocketSharp {
|
||||
return;
|
||||
}
|
||||
|
||||
using (var fs = file.OpenRead())
|
||||
{
|
||||
send(Opcode.BINARY, fs);
|
||||
}
|
||||
send(Opcode.BINARY, file.OpenRead());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -1583,8 +1568,8 @@ namespace WebSocketSharp {
|
||||
return;
|
||||
}
|
||||
|
||||
var ms = new MemoryStream(data);
|
||||
sendAsync(Opcode.BINARY, ms, completed);
|
||||
var stream = new MemoryStream(data);
|
||||
sendAsync(Opcode.BINARY, stream, completed);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -1605,8 +1590,8 @@ namespace WebSocketSharp {
|
||||
return;
|
||||
}
|
||||
|
||||
var ms = new MemoryStream(Encoding.UTF8.GetBytes(data));
|
||||
sendAsync(Opcode.TEXT, ms, completed);
|
||||
var stream = new MemoryStream(Encoding.UTF8.GetBytes(data));
|
||||
sendAsync(Opcode.TEXT, stream, completed);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user