-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4 from rubyqorn/dev-socket-implementation
Fixed unknown resource problem
- Loading branch information
Showing
15 changed files
with
334 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
/vendor/ | ||
/.vscode/ | ||
composer.lock.json | ||
composer.lock |
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
<?php | ||
|
||
namespace WebSocket; | ||
|
||
class Client extends SocketEndpoint implements ISocketImplementer | ||
{ | ||
/** | ||
* Socket resource created using | ||
* acceptSocketConnection method | ||
* @var resource | ||
*/ | ||
protected $createdSocket; | ||
|
||
/** | ||
* Accept server socket connection | ||
* @return resource|\WebSocket\SocketError | ||
*/ | ||
public function create() | ||
{ | ||
$this->createdSocket = $this->connectToSocket(); | ||
|
||
if (!$this->createdSocket) { | ||
return new SocketError('Can\'t accepted connected socket'); | ||
} | ||
|
||
return $this->createdSocket; | ||
} | ||
|
||
/** | ||
* Read message from accepted server socket | ||
* @return \WebSocket\SocketError|\WebSocket\SocketMessage | ||
*/ | ||
public function read() | ||
{ | ||
$socketResponse = new SocketMessage( | ||
$this->readFromSocket($this->createdSocket) | ||
); | ||
|
||
if (!$socketResponse->getSocketResponse()) { | ||
return new SocketError('Can\'t read message from client socket'); | ||
} | ||
|
||
return $socketResponse; | ||
} | ||
|
||
/** | ||
* Write message to server accepted socket | ||
* @param string $message | ||
* @return int|\WebSocket\SocketError | ||
*/ | ||
public function write(string $message) | ||
{ | ||
$writtenMessage = $this->writeToSocket($this->createdSocket, $message); | ||
|
||
if (!$writtenMessage) { | ||
return new SocketError('Can\'t write to accepted client socket'); | ||
} | ||
|
||
return $writtenMessage; | ||
} | ||
|
||
/** | ||
* Call Client destructor method when socket | ||
* connection was broken | ||
* @return void | ||
*/ | ||
public function __destruct() | ||
{ | ||
return $this->closeSocketConnection($this->createdSocket); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
<?php | ||
|
||
namespace WebSocket; | ||
|
||
interface ISocketImplementer | ||
{ | ||
/** | ||
* Initiate socket connection | ||
*/ | ||
public function create(); | ||
|
||
/** | ||
* Read message from initiated socket | ||
*/ | ||
public function read(); | ||
|
||
/** | ||
* Write message to initiated socket | ||
* @param string $message | ||
*/ | ||
public function write(string $message); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
<?php | ||
|
||
namespace WebSocket; | ||
|
||
class Server extends SocketEndpoint implements ISocketImplementer | ||
{ | ||
/** | ||
* Socket resource created using | ||
* acceptSocketConnection method | ||
* @var resource | ||
*/ | ||
protected $createdSocket; | ||
|
||
/** | ||
* Accept client socket connection | ||
* @return resource|\WebSocket\SocketError | ||
*/ | ||
public function create() | ||
{ | ||
$this->createdSocket = $this->acceptConnectionOnSocket(); | ||
|
||
if (!$this->createdSocket) { | ||
return new SocketError('Can\'t accepted connected socket'); | ||
} | ||
|
||
return $this->createdSocket; | ||
} | ||
|
||
/** | ||
* Read message from accepted client socket | ||
* @return \WebSocket\SocketError|\WebSocket\SocketMessage | ||
*/ | ||
public function read() | ||
{ | ||
$socketResponse = new SocketMessage( | ||
$this->readFromSocket($this->createdSocket) | ||
); | ||
|
||
if (!$socketResponse->getSocketResponse()) { | ||
return new SocketError('Can\'t read message from client socket'); | ||
} | ||
|
||
return $socketResponse; | ||
} | ||
|
||
/** | ||
* Write message to client accepted socket | ||
* @param string $message | ||
* @return int|\WebSocket\SocketError | ||
*/ | ||
public function write(string $message) | ||
{ | ||
$writtenMessage = $this->writeToSocket($this->createdSocket, $message); | ||
|
||
if (!$writtenMessage) { | ||
return new SocketError('Can\'t write to accepted client socket'); | ||
} | ||
|
||
return $writtenMessage; | ||
} | ||
|
||
/** | ||
* Call Server destructor method when socket | ||
* connection was broken | ||
* @return void | ||
*/ | ||
public function __destruct() | ||
{ | ||
return $this->closeSocketConnection($this->createdSocket); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.