почему kdb показывает 0N 0N 0N 0Ni как ответ websocket - PullRequest
0 голосов
/ 17 февраля 2019

Я установил .z.ws для печати ответа от веб-сокета

q).z.ws:{neg[.z.w].Q.s value x;}

Я подключаюсь к ws: //echo.websocket.org: 80, используя

q)r:(`$":ws://echo.websocket.org:80")"GET / HTTP/1.1\r\nHost: echo.websocket.org:80\r\n\r\n"

Этот веб-сокет просто возвращает все, что вы отправили, и подтвердил это с помощью браузера.

Но вместо консоли отображается то, что я отправляю.Он просто печатает 0N для того же количества символов.eg

q)neg[r]"test"
0N 0N 0N 0Ni

q)neg[r]"testing"
0N 0N 0N 0N 0N 0N 0Ni

Это как-то связано с сериализацией данных?Я пытался использовать -9!в .z.ws, но это не сработало.

Спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

Успешное создание WebSocket возвращает список из 2 элементов (дескриптор; ответ HTTP).Чтобы отправлять запросы, вам нужно использовать «Handle» вместо полного объекта WebSocket.

Использование полного объекта ('r') с вводом в основном выполняет индексацию в списке из 2 элементов.Вот почему вы получаете '0N', равное длине ввода на консоли, поскольку каждое индексирование символов возвращает 0N из-за отсутствия индекса.На самом деле это не отправка запроса на сервер.

Правильный способ его использования:

q) r:(`$":ws://echo.websocket.org:80")"GET / HTTP/1.1\r\nHost: echo.websocket.org:80\r\n\r\n"
q) neg[r 0] "1+1"
q)"2\r\n"

Подробнее здесь: WebSocket

...