diff --git a/src/Messaging/Protocol/Message.php b/src/Messaging/Protocol/Message.php index 7d78c71..f22f91a 100644 --- a/src/Messaging/Protocol/Message.php +++ b/src/Messaging/Protocol/Message.php @@ -1,7 +1,7 @@ <?php namespace Ratchet\RFC6455\Messaging\Protocol; -class Message implements MessageInterface { +class Message implements \IteratorAggregate, MessageInterface { /** * @var \SplDoublyLinkedList */ @@ -14,6 +14,10 @@ class Message implements MessageInterface { $this->_frames = new \SplDoublyLinkedList; } + public function getIterator() { + return $this->_frames; + } + /** * {@inheritdoc} */ diff --git a/src/Messaging/Protocol/MessageInterface.php b/src/Messaging/Protocol/MessageInterface.php index f3d8a64..2913d82 100644 --- a/src/Messaging/Protocol/MessageInterface.php +++ b/src/Messaging/Protocol/MessageInterface.php @@ -1,7 +1,7 @@ <?php namespace Ratchet\RFC6455\Messaging\Protocol; -interface MessageInterface extends DataInterface, \ArrayAccess, \Countable { +interface MessageInterface extends DataInterface, \Traversable, \ArrayAccess, \Countable { /** * @param FrameInterface $fragment * @return MessageInterface diff --git a/src/Messaging/Streaming/MessageStreamer.php b/src/Messaging/Streaming/MessageStreamer.php index 5701c57..d45fe5a 100644 --- a/src/Messaging/Streaming/MessageStreamer.php +++ b/src/Messaging/Streaming/MessageStreamer.php @@ -64,7 +64,7 @@ class MessageStreamer { if ($context->getMessage()->isCoalesced()) { $msgCheck = $this->validator->checkMessage($context->getMessage()); if ($msgCheck !== true) { - $context->onClose($msgCheck || null); + $context->onClose($msgCheck); return; } $context->onMessage($context->getMessage()); diff --git a/tests/ab/startServer.php b/tests/ab/startServer.php index 47643a6..fa7dbd8 100644 --- a/tests/ab/startServer.php +++ b/tests/ab/startServer.php @@ -33,8 +33,11 @@ class ConnectionContext implements Ratchet\RFC6455\Messaging\Streaming\ContextIn } public function onMessage(\Ratchet\RFC6455\Messaging\Protocol\MessageInterface $msg) { - $frame = new Frame($msg->getPayload(), true, $msg[0]->getOpcode()); - $this->_conn->write($frame->getContents()); + foreach ($msg as $frame) { + $frame->unMaskPayload(); + } + + $this->_conn->write($msg->getContents()); } public function onPing(\Ratchet\RFC6455\Messaging\Protocol\FrameInterface $frame) {