Задать вопрос
@Aldifor

При вызове json_decode() возникает ошибка: strlen() expects parameter 1 to be string, object given?

Пытаюсь прикрутить к сайту сокеты. Библиотека Ratchet
код клиентской части
socket = new WebSocket('ws://localhost:5432');
        console.log(socket);
        socket.onopen = function(e) {
            is_socket = true;
            socket.send('{"user_id":"67","init":1}');
        };

Сервер :
public function onMessage(ConnectionInterface $from, $data)
    {
        $numRecv = count($this->clients) - 1;
        $data = json_decode($data); // возвращает объект и ошибку strlen()
        var_dump(json_last_error());   //нет ошибок
        var_dump(json_last_error_msg());   // нет ошибок
        var_dump($data);
        

        foreach ($this->clients as $client) {
            $client->send($data);
        }
    }


Вывод в консоли

$ yii socket/start-socket
New connection! 89
int(0)
string(8) "No error"
object(stdClass)#74 (2) {
  ["user_id"]=>
  string(2) "67"
  ["init"]=>
  int(1)
}
An error has occurred: strlen() expects parameter 1 to be string, object given
Connection 89 has disconnected


В чем может быть ошибка? На сервер приходит строка.
Однако вызов json_decode() возвращает объект и ошибку strlen
  • Вопрос задан
  • 470 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
TommyV888
@TommyV888 Куратор тега PHP
-
Ошибка не в json_decode, а в strlen из метода send. Если вы вызываете json_decode, тогда в send передаётся объект, а если нет, то строка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
Wanted. Москва
от 250 000 до 400 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
22 янв. 2025, в 19:19
2300 руб./в час
22 янв. 2025, в 18:00
15000 руб./за проект
22 янв. 2025, в 17:57
2000 руб./в час