Задать вопрос
@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
  • Вопрос задан
  • 469 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
TommyV888
@TommyV888 Куратор тега PHP
-
Ошибка не в json_decode, а в strlen из метода send. Если вы вызываете json_decode, тогда в send передаётся объект, а если нет, то строка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы