Skip to content

Commit 0b673cc

Browse files
committed
Including frames in the MessageEvent
1 parent 0d25725 commit 0b673cc

File tree

4 files changed

+48
-28
lines changed

4 files changed

+48
-28
lines changed

src/Event/MessageEvent.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,28 @@
44
namespace ThenLabs\WebSocketServer\Event;
55

66
use ThenLabs\SocketServer\Event\DataEvent;
7+
use ThenLabs\SocketServer\Frame;
78

89
/**
910
* @author Andy Daniel Navarro Taño <[email protected]>
1011
*/
1112
class MessageEvent extends DataEvent
1213
{
14+
/**
15+
* @var Frame[]
16+
*/
17+
protected $frames = [];
18+
19+
public function setFrames(array $frames): void
20+
{
21+
$this->frames = $frames;
22+
}
23+
24+
public function getFrames(): array
25+
{
26+
return $this->frames;
27+
}
28+
1329
/**
1430
* Is alias of getData()
1531
*

src/WebSocketServer.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,12 @@ public function onData(DataEvent $event): void
143143
$payload = $previousPayload.$payload;
144144
}
145145

146+
$frames = $webSocketConnection->getBuffer();
147+
$frames[] = $frame;
148+
146149
$messageEvent = new MessageEvent($this, $webSocketConnection, $payload);
150+
$messageEvent->setFrames($frames);
151+
147152
$this->dispatcher->dispatch($messageEvent);
148153
break;
149154

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
use ThenLabs\WebSocketServer\Event\MessageEvent;
4+
use ThenLabs\WebSocketServer\Event\OpenEvent;
5+
use ThenLabs\WebSocketServer\WebSocketServer;
6+
7+
class MyWebSocketServer extends WebSocketServer
8+
{
9+
public function onOpen(OpenEvent $event): void
10+
{
11+
sleep(1);
12+
13+
$connection = $event->getConnection();
14+
$request = $event->getRequest();
15+
16+
$connection->send('New WebSocketConnection to the path: '.$request->getRequestUri());
17+
}
18+
19+
public function onMessage(MessageEvent $event): void
20+
{
21+
$connection = $event->getConnection();
22+
23+
// responds with the same message.
24+
$connection->send($event->getData());
25+
}
26+
}

tests/Functional/run-server.php

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,7 @@
11
<?php
22

33
require_once __DIR__.'/../../bootstrap.php';
4-
5-
use Monolog\Handler\StreamHandler;
6-
use ThenLabs\WebSocketServer\Event\MessageEvent;
7-
use ThenLabs\WebSocketServer\Event\OpenEvent;
8-
use ThenLabs\WebSocketServer\WebSocketServer;
9-
10-
class MyWebSocketServer extends WebSocketServer
11-
{
12-
public function onOpen(OpenEvent $event): void
13-
{
14-
sleep(1);
15-
16-
$connection = $event->getConnection();
17-
$request = $event->getRequest();
18-
19-
$connection->send('New WebSocketConnection to the path: '.$request->getRequestUri());
20-
}
21-
22-
public function onMessage(MessageEvent $event): void
23-
{
24-
$connection = $event->getConnection();
25-
26-
// responds with the same message.
27-
$connection->send($event->getData());
28-
}
29-
}
4+
require_once __DIR__.'/MyWebSocketServer.php';
305

316
$config = [
327
'host' => $argv[1] ?? '127.0.0.1',
@@ -35,6 +10,4 @@ public function onMessage(MessageEvent $event): void
3510
];
3611

3712
$server = new MyWebSocketServer($config);
38-
$server->getLogger()->pushHandler(new StreamHandler(LOGS_FILE));
39-
4013
$server->start();

0 commit comments

Comments
 (0)