|
|
|
@ -1473,13 +1473,26 @@ namespace WebSocketSharp
|
|
|
|
private bool processPingFrame (WebSocketFrame frame)
|
|
|
|
private bool processPingFrame (WebSocketFrame frame)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var data = frame.PayloadData.ApplicationData;
|
|
|
|
var data = frame.PayloadData.ApplicationData;
|
|
|
|
if (!send (Fin.Final, Opcode.Pong, data, false))
|
|
|
|
var pong = WebSocketFrame.CreatePongFrame (data, _client);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lock (_forState) {
|
|
|
|
|
|
|
|
if (_readyState != WebSocketState.Open) {
|
|
|
|
|
|
|
|
_logger.Error ("The state of the connection has been changed.");
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!sendBytes (pong.ToArray ()))
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_logger.Trace ("A pong has been sent to respond to this ping.");
|
|
|
|
_logger.Trace ("A pong has been sent to respond to this ping.");
|
|
|
|
|
|
|
|
|
|
|
|
if (_emitOnPing)
|
|
|
|
if (_emitOnPing) {
|
|
|
|
|
|
|
|
if (_client)
|
|
|
|
|
|
|
|
pong.Unmask ();
|
|
|
|
|
|
|
|
|
|
|
|
enqueueToMessageEventQueue (new MessageEventArgs (frame));
|
|
|
|
enqueueToMessageEventQueue (new MessageEventArgs (frame));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|