Skip to content

Commit a972292

Browse files
committed
Fixed some refactoring errors
1 parent 7a3b0ee commit a972292

22 files changed

+100
-243
lines changed

examples/demo.php

Lines changed: 15 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
#!/php -q
22
<?php
33

4-
require_once(__DIR__ . "/vendor/autoload.php");
4+
require_once("../vendor/autoload.php");
55

66

77
// Run from command prompt > php demo.php
88
use Devristo\Phpws\Framing\WebSocketFrame;
99
use Devristo\Phpws\Framing\WebSocketOpcode;
10-
use Devristo\Phpws\Messaging\IWebSocketMessage;
10+
use Devristo\Phpws\Messaging\WebSocketMessageInterface;
1111
use Devristo\Phpws\Protocol\WebSocketConnectionInterface;
1212
use Devristo\Phpws\Server\IWebSocketServerObserver;
1313
use Devristo\Phpws\Server\UriHandler\WebSocketUriHandler;
@@ -22,85 +22,28 @@
2222
*/
2323
class DemoEchoHandler extends WebSocketUriHandler {
2424

25-
public function __construct(\Zend\Log\LoggerInterface $logger, \React\EventLoop\LoopInterface $loop){
26-
parent::__construct($logger);
2725

28-
$that = $this;
29-
30-
$loop->addPeriodicTimer(1, function() use ($that){
31-
foreach($that->getConnections() as $client){
32-
$client->sendString("Hello world!");
33-
}
34-
});
35-
}
36-
37-
public function onMessage(WebSocketConnectionInterface $user, IWebSocketMessage $msg) {
26+
public function onMessage(WebSocketConnectionInterface $user, WebSocketMessageInterface $msg) {
3827
$this->logger->notice("[ECHO] " . strlen($msg->getData()) . " bytes");
3928
// Echo
4029
$user->sendMessage($msg);
4130
}
42-
43-
public function onAdminMessage(WebSocketConnectionInterface $user, IWebSocketMessage $obj) {
44-
$this->logger->notice("[DEMO] Admin TEST received!");
45-
46-
$frame = WebSocketFrame::create(WebSocketOpcode::PongFrame);
47-
$user->sendFrame($frame);
48-
}
49-
5031
}
5132

52-
/**
53-
* Demo socket server. Implements the basic eventlisteners and attaches a resource handler for /echo/ urls.
54-
*
55-
*
56-
* @author Chris
57-
*
58-
*/
59-
class DemoSocketServer implements IWebSocketServerObserver {
60-
61-
protected $debug = true;
62-
protected $server;
63-
64-
public function __construct(\React\EventLoop\LoopInterface $loop) {
65-
$logger = new \Zend\Log\Logger();
66-
$logger->addWriter(new Zend\Log\Writer\Stream("php://output"));
67-
68-
$this->logger = $logger;
69-
70-
$this->server = new WebSocketServer("tcp://0.0.0.0:12345", $loop, $logger);
71-
$this->server->addObserver($this);
72-
73-
$this->server->addUriHandler("echo", new DemoEchoHandler($logger, $loop));
74-
}
75-
76-
public function onConnect(WebSocketConnectionInterface $user) {
77-
$this->logger->notice("[DEMO] {$user->getId()} connected");
78-
}
79-
80-
public function onMessage(WebSocketConnectionInterface $user, IWebSocketMessage $msg) {
81-
//$this->logger->notice("[DEMO] {$user->getId()} says '{$msg->getData()}'");
82-
}
83-
84-
public function onDisconnect(WebSocketConnectionInterface $user) {
85-
$this->logger->notice("[DEMO] {$user->getId()} disconnected");
86-
}
87-
88-
public function onAdminMessage(WebSocketConnectionInterface $user, IWebSocketMessage $msg) {
89-
$this->logger->notice("[DEMO] Admin Message received!");
90-
91-
$frame = WebSocketFrame::create(WebSocketOpcode::PongFrame);
92-
$user->sendFrame($frame);
93-
}
33+
$loop = \React\EventLoop\Factory::create();
9434

95-
public function run() {
96-
$this->server->run();
97-
}
35+
// Create a logger which writes everything to the STDOUT
36+
$logger = new \Zend\Log\Logger();
37+
$writer = new Zend\Log\Writer\Stream("php://output");
38+
$logger->addWriter($writer);
9839

99-
}
40+
// Create a WebSocket server and create a router which sends all user requesting /echo to the DemoEchoHandler above
41+
$server = new WebSocketServer("tcp://0.0.0.0:12345", $loop, $logger);
42+
$router = new \Devristo\Phpws\Server\UriHandler\ClientRouter($server, $logger);
43+
$router->addUriHandler('#^/echo$#i', new DemoEchoHandler($logger));
10044

101-
$loop = \React\EventLoop\Factory::create();
45+
// Bind the server
46+
$server->bind();
10247

103-
// Start server
104-
$server = new DemoSocketServer($loop);
105-
$server->run();
48+
// Start the event loop
10649
$loop->run();

examples/demo_ssl.php

Lines changed: 24 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,37 @@
11
#!/php -q
22
<?php
3+
require_once("../vendor/autoload.php");
34

4-
require_once("vendor/autoload.php");
5-
6-
7-
// Run from command prompt > php demo.php
8-
use Devristo\Phpws\Framing\WebSocketFrame;
9-
use Devristo\Phpws\Framing\WebSocketOpcode;
10-
use Devristo\Phpws\Messaging\IWebSocketMessage;
5+
use Devristo\Phpws\Messaging\WebSocketMessageInterface;
116
use Devristo\Phpws\Protocol\WebSocketConnectionInterface;
12-
use Devristo\Phpws\Server\IWebSocketServerObserver;
13-
use Devristo\Phpws\Server\UriHandler\WebSocketUriHandler;
147
use Devristo\Phpws\Server\WebSocketServer;
158

16-
/**
17-
* This demo resource handler will respond to all messages sent to /echo/ on the socketserver below
18-
*
19-
* All this handler does is echoing the responds to the user
20-
* @author Chris
21-
*
22-
*/
23-
class DemoSslEchoHandler extends WebSocketUriHandler {
24-
25-
public function onMessage(WebSocketConnectionInterface $user, IWebSocketMessage $msg) {
26-
$this->logger->notice("[ECHO] {$msg->getData()}");
27-
// Echo
28-
$user->sendMessage($msg);
29-
}
30-
31-
public function onAdminMessage(WebSocketConnectionInterface $user, IWebSocketMessage $obj) {
32-
$this->logger->notice("[DEMO] Admin TEST received!");
33-
34-
$frame = WebSocketFrame::create(WebSocketOpcode::PongFrame);
35-
$user->sendFrame($frame);
36-
}
37-
38-
}
39-
40-
/**
41-
* Demo socket server. Implements the basic eventlisteners and attaches a resource handler for /echo/ urls.
42-
*
43-
*
44-
* @author Chris
45-
*
46-
*/
47-
class DemoSslSocketServer implements IWebSocketServerObserver {
48-
49-
protected $debug = true;
50-
protected $server;
51-
52-
public function __construct($loop) {
53-
$logger = new \Zend\Log\Logger();
54-
$logger->addWriter(new Zend\Log\Writer\Stream("php://output"));
55-
56-
$this->logger = $logger;
57-
58-
$this->server = new WebSocketServer("ssl://0.0.0.0:12345", $loop, $logger);
59-
$this->server->addObserver($this);
60-
61-
$this->server->addUriHandler("echo", new ProxyHandler($logger));
62-
63-
$this->setupSSL();
64-
}
65-
66-
private function getPEMFilename() {
67-
return './democert.pem';
68-
}
69-
70-
public function setupSSL() {
71-
$context = stream_context_create();
72-
73-
// local_cert must be in PEM format
74-
stream_context_set_option($context, 'ssl', 'local_cert', $this->getPEMFilename());
75-
76-
stream_context_set_option($context, 'ssl', 'allow_self_signed', true);
77-
stream_context_set_option($context, 'ssl', 'verify_peer', false);
78-
79-
$this->server->setStreamContext($context);
80-
}
81-
82-
public function onConnect(WebSocketConnectionInterface $user) {
83-
$this->logger->notice("[DEMO] {$user->getId()} connected");
84-
}
85-
86-
public function onMessage(WebSocketConnectionInterface $user, IWebSocketMessage $msg) {
87-
$this->logger->notice("[DEMO] {$user->getId()} says '{$msg->getData()}'");
88-
}
89-
90-
public function onDisconnect(WebSocketConnectionInterface $user) {
91-
$this->logger->notice("[DEMO] {$user->getId()} disconnected");
92-
}
9+
$loop = \React\EventLoop\Factory::create();
9310

94-
public function onAdminMessage(WebSocketConnectionInterface $user, IWebSocketMessage $msg) {
95-
$this->logger->notice("[DEMO] Admin Message received!");
11+
// Create a logger which writes everything to the STDOUT
12+
$logger = new \Zend\Log\Logger();
13+
$writer = new Zend\Log\Writer\Stream("php://output");
14+
$logger->addWriter($writer);
9615

97-
$frame = WebSocketFrame::create(WebSocketOpcode::PongFrame);
98-
$user->sendFrame($frame);
99-
}
16+
// Create a WebSocket server using SSL
17+
$server = new WebSocketServer("ssl://0.0.0.0:12345", $loop, $logger);
18+
$context = stream_context_create();
19+
stream_context_set_option($context, 'ssl', 'local_cert', "democert.pem");
20+
stream_context_set_option($context, 'ssl', 'allow_self_signed', true);
21+
stream_context_set_option($context, 'ssl', 'verify_peer', false);
22+
$server->setStreamContext($context);
10023

101-
public function run() {
102-
$this->server->run();
103-
}
24+
$server->on("connect", function(WebSocketConnectionInterface $user){
25+
$user->sendString("Hey! I am the echo robot. I will repeat all your input!");
26+
});
10427

105-
}
28+
$server->on("message", function(WebSocketConnectionInterface $user, WebSocketMessageInterface $message) use($logger){
29+
$logger->notice(sprintf("We have got '%s' from client %s", $message->getData(), $user->getId()));
30+
$user->sendString($message->getData());
31+
});
10632

107-
$loop = \React\EventLoop\Factory::create();
33+
// Bind the server
34+
$server->bind();
10835

109-
// Start server
110-
$server = new ProxyWebSocketServer($loop);
111-
$server->run();
36+
// Start the event loop
11237
$loop->run();
File renamed without changes.

examples/tcp_proxy_example.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#!/php -q
22
<?php
33

4-
require_once("vendor/autoload.php");
4+
require_once("../vendor/autoload.php");
55

66
// Run from command prompt > php demo.php
7-
use Devristo\Phpws\Messaging\IWebSocketMessage;
7+
use Devristo\Phpws\Messaging\WebSocketMessageInterface;
88
use Devristo\Phpws\Protocol\WebSocketConnectionInterface;
99
use Devristo\Phpws\Server\UriHandler\WebSocketUriHandler;
1010
use Devristo\Phpws\Server\WebSocketServer;
@@ -39,7 +39,7 @@ public function onDisconnect(WebSocketConnectionInterface $user)
3939
unset($this->streams[$user->getId()]);
4040
}
4141

42-
public function onMessage(WebSocketConnectionInterface $user, IWebSocketMessage $msg)
42+
public function onMessage(WebSocketConnectionInterface $user, WebSocketMessageInterface $msg)
4343
{
4444
try {
4545
$message = json_decode($msg->getData());
@@ -172,6 +172,7 @@ protected function addStream(WebSocketConnectionInterface $user, $id, \React\Str
172172
$this->streams[$user->getId()][$id] = $stream;
173173
}
174174
}
175+
175176
$loop = \React\EventLoop\Factory::create();
176177
$logger = new \Zend\Log\Logger();
177178
$writer = new Zend\Log\Writer\Stream("php://output");

src/Devristo/Phpws/Client/WebSocket.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
namespace Devristo\Phpws\Client;
44

55
use Devristo\Phpws\Exceptions\WebSocketInvalidUrlScheme;
6-
use Devristo\Phpws\Framing\IWebSocketFrame;
6+
use Devristo\Phpws\Framing\WebSocketFrameInterface;
77
use Devristo\Phpws\Framing\WebSocketFrame;
88
use Devristo\Phpws\Framing\WebSocketOpcode;
9-
use Devristo\Phpws\Messaging\IWebSocketMessage;
9+
use Devristo\Phpws\Messaging\WebSocketMessageInterface;
1010
use Devristo\Phpws\Protocol\WebSocketConnection;
1111
use Devristo\Phpws\Protocol\WebSocketConnectionFactory;
1212
use Devristo\Phpws\Protocol\WebSocketConnectionHybi;
@@ -179,12 +179,12 @@ public function send($string)
179179
$this->_connection->sendString($string);
180180
}
181181

182-
public function sendMessage(IWebSocketMessage $msg)
182+
public function sendMessage(WebSocketMessageInterface $msg)
183183
{
184184
$this->_connection->sendMessage($msg);
185185
}
186186

187-
public function sendFrame(IWebSocketFrame $frame)
187+
public function sendFrame(WebSocketFrameInterface $frame)
188188
{
189189
$this->_connection->sendFrame($frame);
190190
}

src/Devristo/Phpws/Exceptions/WebSocketFrameSizeMismatch.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
*/
99
namespace Devristo\Phpws\Exceptions;
1010

11-
use Devristo\Phpws\Framing\IWebSocketFrame;
11+
use Devristo\Phpws\Framing\WebSocketFrameInterface;
1212
use Exception;
1313

1414
class WebSocketFrameSizeMismatch extends Exception
1515
{
1616

17-
public function __construct(IWebSocketFrame $msg)
17+
public function __construct(WebSocketFrameInterface $msg)
1818
{
1919
parent::__construct("Frame size mismatches with the expected frame size. Maybe a buggy client.");
2020
}

src/Devristo/Phpws/Exceptions/WebSocketMessageNotFinalised.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
*/
99
namespace Devristo\Phpws\Exceptions;
1010

11-
use Devristo\Phpws\Messaging\IWebSocketMessage;
11+
use Devristo\Phpws\Messaging\WebSocketMessageInterface;
1212
use Exception;
1313

1414
class WebSocketMessageNotFinalised extends Exception
1515
{
1616

17-
public function __construct(IWebSocketMessage $msg)
17+
public function __construct(WebSocketMessageInterface $msg)
1818
{
1919
parent::__construct("WebSocketMessage is not finalised!");
2020
}

src/Devristo/Phpws/Framing/WebSocketFrame.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* @author Chris
1616
*
1717
*/
18-
class WebSocketFrame implements IWebSocketFrame
18+
class WebSocketFrame implements WebSocketFrameInterface
1919
{
2020

2121
// First Byte

src/Devristo/Phpws/Framing/WebSocketFrame76.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
namespace Devristo\Phpws\Framing;
33

44

5-
class WebSocketFrame76 implements IWebSocketFrame
5+
class WebSocketFrame76 implements WebSocketFrameInterface
66
{
77

88
public $payloadData = '';

src/Devristo/Phpws/Framing/WebSocketFrameInterface.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
*
1414
* @author Chris
1515
*/
16-
interface IWebSocketFrame
16+
interface WebSocketFrameInterface
1717
{
1818

1919
/**
@@ -45,7 +45,7 @@ public function getType();
4545
* @param int $type
4646
* @param string $data
4747
*
48-
* @return \Devristo\Phpws\Framing\IWebSocketFrame
48+
* @return \Devristo\Phpws\Framing\WebSocketFrameInterface
4949
*/
5050
public static function create($type, $data = null);
5151
}

0 commit comments

Comments
 (0)