Skip to content

Commit a95f36a

Browse files
committed
Pass all the autobahn tests
1 parent a510fee commit a95f36a

4 files changed

Lines changed: 40 additions & 1 deletion

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
/composer.lock
22
/vendor
3+
/tests/ab/reports

src/WebSocketConnection.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ function (Frame $frame) {
3737
list($closeCode) = array_merge(unpack('n*', substr($frame->getPayload(), 0, 2)));
3838
}
3939

40+
$this->stream->end($frame->getContents());
41+
4042
if ($closeCode >= 2000) {
4143
// emit close code as error
4244
$exception = new \Exception('WebSocket closed with code ' . $closeCode);
@@ -46,7 +48,6 @@ function (Frame $frame) {
4648

4749
$this->emit('close', [$closeCode, $this]);
4850

49-
$this->stream->close();
5051
return;
5152
}
5253
},

tests/ab/fuzzingclient.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"options": {"failByDrop": false}
3+
, "outdir": "reports"
4+
5+
, "servers": [
6+
{"agent": "WebSocketMiddleware", "url": "ws://localhost:4321", "options": {"version": 18}}
7+
]
8+
9+
, "cases": ["*"]
10+
, "exclude-cases": ["10.*", "11.*", "12.*", "13.*"]
11+
, "exclude-agent-cases": {}
12+
}

tests/ab/testServer.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
use Ratchet\RFC6455\Messaging\Message;
4+
use React\EventLoop\Factory;
5+
use React\Http\MiddlewareRunner;
6+
use React\Http\Server;
7+
use Voryx\WebSocketMiddleware\WebSocketConnection;
8+
use Voryx\WebSocketMiddleware\WebSocketMiddleware;
9+
10+
require __DIR__ . '/../../vendor/autoload.php';
11+
12+
$loop = Factory::create();
13+
14+
$ws = new WebSocketMiddleware([], function (WebSocketConnection $conn) {
15+
$conn->on('message', function (Message $message) use ($conn) {
16+
$conn->send($message);
17+
});
18+
});
19+
20+
$server = new Server(new MiddlewareRunner([$ws]));
21+
22+
$server->listen(new \React\Socket\Server('127.0.0.1:4321', $loop));
23+
24+
$loop->run();
25+

0 commit comments

Comments
 (0)