Как мне сделать это javascript .onmessage в PHP ( websocket )
Я пытаюсь сделать это на php
websocket.onmessage = function(evt) { console.log("Message Received: " + evt.data); };
Кто-нибудь может помочь ?
Что я уже пробовал:
Мой php код:
// SEND TO THE SERVER THE JSON $client->send( json_encode($info) ); // RECEIVED THE INFORMATION $data = json_decode( $client->receive() ); $x=0; // JUST A COUNTER SO THE WHILE WON'T LOOP FOREVER // TRIED WHILE BUT NO GOOD while ($x<10) { sleep(1); echo $x."<br>"; echo $client->receive(); }
В результате получается смесь нужной мне информации и ошибок;
7a6efd45-8a35-4530-a477-b25bd5b584ff0 {"success":true} {"values":{"0":"16:59:21","3":"22,66","4":"22,66"},"type":"QuoteType","parameter":"petr4"} {"values":{"0":"16:59:22","3":"22,77","4":"22,77"},"type":"QuoteType","parameter":"petr4"}
И СООБЩЕНИЕ ОБ ОШИБКЕ
Фатальная ошибка: Uncaught WebSocket\ConnectionException: пустое чтение; соединение мертво? Состояние потока: {
"крипто":{"протокола":"в протоколе TLSv1.2","cipher_name":"протокола ECDHE-RSA-на-AES128-GCM не-и SHA256","cipher_bits":128,
"cipher_version":"TLSv1.2"},"timed_out":true,"blocked":true,"eof":false,"stream_type":"tcp_socket\/ssl",
"mode":"r+","unread_bytes":0,"seekable":false} in F:\xampp-php72\...\websocket\lib\Base.php:269
Трассировка стека: #0 F:\xampp-php72\htdocs\testcodes\call\vendor\textalk\websocket\lib\Base.php(143):
WebSocket\Base->read(2) #1 F:\xampp-php72\htdocs\testcodes\call\vendor\textalk\websocket\lib\Base.php(135):
WebSocket\Base->receive_fragment() #2 F:\xampp-php72\htdocs\...\example.php(57):
WebSocket\Base->receive() #3 {main} брошен F:\xampp-php72\htdocs\...\websocket\lib\Base.php на линии 269
Sandeep Mewara
Кстати, вы написали: $x=0; // просто счетчик, так что WHILE не будет петлять вечно
но в цикле while$ x не изменился. Это бесконечный цикл while.
Sandeep Mewara
можете ли вы объяснить: в результате получается смесь нужной мне информации и ошибки;
вы получаете комбинацию в результате? или сказать, что когда все хорошо, вы получаете успех, а когда нет - вы получаете ошибку.
bigbits
Успех-это соединение и маркер. Я попытался упростить пример, но, возможно, эта дополнительная информация не была необходима ( токен и успех ).
В принципе, я как клиент websocket отправляю информацию, и мне нужно поддерживать соединение и получать любые обновления с сервера websocket ( от третьей стороны ).
Я попробовал while и внутри while вызвать $client->receive(); но ошибка, которую я получаю в 99% случаев, такова:
Uncaught WebSocket\ConnectionException: Пусто
WebSocket\Base->receive_fragment()
Извините, если я еще больше запутал вас.
bigbits
у него действительно есть $x++; это просто то, что я быстро скопировал и вставил. До того, как условие стало истинным.
Для меня важно воспроизвести то же самое принимающее состояние.