32 lines
1.0 KiB
PHP
32 lines
1.0 KiB
PHP
<?php
|
|
namespace Ratchet\Resource\Command\Action;
|
|
use Ratchet\Resource\Command\ActionTemplate;
|
|
use Ratchet\Application\ApplicationInterface;
|
|
use Ratchet\Resource\Connection;
|
|
use Ratchet\Resource\Command\CommandInterface;
|
|
use Ratchet\Resource\Command\Composite;
|
|
|
|
/**
|
|
* Close the connection to the sockets passed in the constructor
|
|
*/
|
|
class CloseConnection extends ActionTemplate {
|
|
function execute(ApplicationInterface $scope = null) {
|
|
// All this code allows an application to have its onClose method executed before the socket is actually closed
|
|
$ret = $scope->onClose($this->getConnection());
|
|
|
|
if ($ret instanceof CommandInterface) {
|
|
$comp = new Composite;
|
|
$comp->enqueue($ret);
|
|
|
|
$rt = new Runtime($this->getConnection());
|
|
$rt->setCommand(function(Connection $conn, ApplicationInterface $scope) {
|
|
$conn->getSocket()->close();
|
|
});
|
|
$comp->enqueue($rt);
|
|
|
|
return $comp;
|
|
}
|
|
|
|
$this->getConnection()->getSocket()->close();
|
|
}
|
|
} |