[WebSocket] RFC Fragmentation

AB tests 5.* passing
Refs #13
This commit is contained in:
Chris Boden 2012-06-16 12:20:14 -04:00
parent ccf7114a90
commit cea49e714b
2 changed files with 16 additions and 1 deletions

View File

@ -130,6 +130,14 @@ class RFC6455 implements VersionInterface {
$overflow = $from->WebSocket->frame->extractOverflow(); $overflow = $from->WebSocket->frame->extractOverflow();
if ($frame::OP_CONTINUE == $frame->getOpcode() && 0 == count($from->WebSocket->message)) {
return $from->close($frame::CLOSE_PROTOCOL);
}
if (count($from->WebSocket->message) > 0 && $frame::OP_CONTINUE != $frame->getOpcode()) {
return $from->close($frame::CLOSE_PROTOCOL);
}
$from->WebSocket->message->addFrame($from->WebSocket->frame); $from->WebSocket->message->addFrame($from->WebSocket->frame);
unset($from->WebSocket->frame); unset($from->WebSocket->frame);
} }

View File

@ -3,7 +3,7 @@ namespace Ratchet\WebSocket\Version\RFC6455;
use Ratchet\WebSocket\Version\MessageInterface; use Ratchet\WebSocket\Version\MessageInterface;
use Ratchet\WebSocket\Version\FrameInterface; use Ratchet\WebSocket\Version\FrameInterface;
class Message implements MessageInterface { class Message implements MessageInterface, \Countable {
/** /**
* @var SplDoublyLinkedList * @var SplDoublyLinkedList
*/ */
@ -13,6 +13,13 @@ class Message implements MessageInterface {
$this->_frames = new \SplDoublyLinkedList; $this->_frames = new \SplDoublyLinkedList;
} }
/**
* {@inheritdoc}
*/
public function count() {
return count($this->_frames);
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */