Клиент PHP Websocket – держите соединение открытымPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Клиент PHP Websocket – держите соединение открытым

Сообщение Anonymous »

Я использую PHP-WSS в приложении laravel, и мне нужно держать клиент websocket открытым для получения различных сообщений от сервера websocket.
На данный момент я создал php-скрипт CLI, который могу выполнять и ждать прибытия сообщений.
Я создал следующую функцию для тестирования...
Вопрос в том, чтобы держать соединение открытым для любых сообщений, которые могут быть отправлены с сервера, хороший ли это подход сделать это, как показано ниже, используя цикл while(true)? Могу ли я сделать это лучше? (Мне это кажется грязным, и хотелось бы улучшить его и сделать правильно)
function testWebsocketClient() {
$url = 'wss://example.com/?token=xyz123456';
$client = new WebSocketClient($url, new ClientConfig());
while(true){
sleep(5);
$client->send('test');
$return = $client->receive(); // test received OK
}
return $return;
}

ОБНОВЛЕНИЕ: Любой, кто использует PHP-WSS, обнаружил ошибку в Connection.php в методе BroadCast.
Исходная функция пытается отправить сообщение при разорванном соединении, что показывает следующую ошибку
Пустое чтение; соединение разорвано?
(обратите внимание на EOF = true)
public function broadCast(string $data): void
{
foreach ($this->clients as $client) {
if (is_resource($client) ) { // check if not yet closed/broken etc
fwrite($client, $this->encode($data));
} else {
echo 'Skipping a closed connection';
}
}
}

Я изменил его на
public function broadCast(string $data): void
{
foreach ($this->clients as $client) {
//echo PHP_EOL. stream_get_status($client) .PHP_EOL;
$clientMeta = ( stream_get_meta_data($client) );
$clientEof = $clientMeta['eof'];
if (is_resource($client) && $clientEof == false ) { // check if not yet closed/broken etc
fwrite($client, $this->encode($data));
} else {
echo 'Skipping a closed connection';
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/684 ... ction-open
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»