Всем привет, я написал небольшой WS сервер по
это статье
По итогу у меня получилась такая консольная команда
Которая и запускает сам WS сервер
<?php
namespace App\Command;
use Ratchet\Http\HttpServer;
use Ratchet\Server\IoServer;
use Ratchet\WebSocket\WsServer;
use App\Websocket\MessageHandler;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class WebsocketServerCommand extends Command
{
protected static $defaultName = "run:websocket-server";
protected function execute(InputInterface $input, OutputInterface $output)
{
$port = 3001;
$output->writeln("Starting server on port " . $port);
$server = IoServer::factory(
new HttpServer(
new WsServer(
new MessageHandler()
)
),
$port
);
$server->run();
return 0;
}
}
И обработчик соединений
<?php
namespace App\Websocket;
use Exception;
use Ratchet\ConnectionInterface;
use Ratchet\MessageComponentInterface;
class MessageHandler implements MessageComponentInterface
{
public function onOpen(ConnectionInterface $conn)
{
}
public function onMessage(ConnectionInterface $from, $msg)
{
}
public function onClose(ConnectionInterface $conn)
{
}
public function onError(ConnectionInterface $conn, Exception $e)
{
}
}
Собственно вопрос в чем, у меня WS подключено куча клиентов, и они между собой не общаются они только принимают сообщения, мне надо разослать 1 сообщение всем подключенным клиентам.
Тоесть мне надо как то дернуть события onMessage что бы разослать сообщения все подключенным клиентам.
(
Ну наверное... я так думаю) - но чет вот я не знаю как правильно дернуть такое событие? веть мне нужно еще проверить есть ли у меня для них новое сообщение, я думал положить сообщение в memcache и брать его от туда,
но в каком именно моменте и где я должен проверять не появилось ли там сообщение?
В общем кто работал с ratchet можете подсказать как например проверить memcache на предмет нового сообщения? или как то задиспатчить событие рассылки сообщения... надеюсь я понятно сформулировал вопрос...