Инструменты пользователя

Инструменты сайта


rowset-definition

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
rowset-definition [2026/02/26 12:52] – [Раздел autoexec] madminrowset-definition [2026/02/26 14:15] (текущий) – [Раздел autoexec] madmin
Строка 391: Строка 391:
   </autoexec>   </autoexec>
 </code> </code>
-  * url - http адрес socket соединения+  * url - адрес socket соединения 
 +  * pingtimeout - если параметр задан, то клиент будет периодически посылать сообщение ping серверу, для проверки соединения
   * параметры param - добавляются в url polling запроса   * параметры param - добавляются в url polling запроса
  
 +Пример реализации WebSocket сервера на Ratchet
 +<code>
 +<?php
 +require_once('.lss-init.php');
 +$path=pathRootConcat(
 + getCfg('path.root.extlib'),
 + 'Ratchet',
 + 'autoload.php'
 +);
 +require_once($path);
 +
 +use Ratchet\MessageComponentInterface;
 +use Ratchet\ConnectionInterface;
 +use Ratchet\Http\HttpServer;
 +use Ratchet\WebSocket\WsServer;
 +use Ratchet\Server\IoServer;
 +use React\EventLoop\Factory;
 +
 +class MyServer implements MessageComponentInterface {
 +    protected $clients;
 +
 +    public function __construct() {
 + $this->clients = new \SplObjectStorage;
 +    }
 +
 +    public function onOpen(ConnectionInterface $conn) {
 + $queryString = $conn->httpRequest->getUri()->getQuery();
 + parse_str($queryString, $info);
 + $conn->info=$info;
 + $this->clients->attach($conn);
 + echo '- open'."\n";
 +    }
 +
 +    public function onClose(ConnectionInterface $conn) {
 + $this->clients->detach($conn);
 + echo '- close'."\n";
 +    }
 +
 +    public function onMessage(ConnectionInterface $from, $msg) {
 + if ($msg=='ping') {
 + $from->send('pong');
 + echo '- ping - pong'."\n";
 + }
 + }
 +
 +    public function onError(ConnectionInterface $conn, \Exception $e) {
 + $conn->close();
 + echo '- error'."\n";
 +    }
 +
 +    public function broadcast($msg) {
 + echo '- отправка сообщений всем пользователям'."\n";
 + foreach ($this->clients as $client) {
 + $client->send($msg);
 + }
 +    }
 +}
 +
 +$loop = Factory::create();
 +$serverComponent = new MyServer();
 +
 +$loop->addPeriodicTimer(5, function() use ($serverComponent) {
 +    $serverComponent->broadcast('1');
 +});
 +
 +$webSock = new React\Socket\Server('0.0.0.0:8080', $loop);
 +
 +$server = new Ratchet\Server\IoServer(
 +    new HttpServer(
 +        new WsServer($serverComponent)
 +    ),
 +    $webSock,
 +    $loop
 +);
 +
 +echo "\n".'WebSocket запущен'."\n";
 +$loop->run();
 +</code>
rowset-definition.1772099524.txt.gz · Последнее изменение: 2026/02/26 12:52 — madmin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki