为什么 kdb 将 0N 0N 0N 0Ni 显示为 websocket 响应

why does kdb show 0N 0N 0N 0Ni as websocket response

我已经设置 .z.ws 打印来自 websocket 的响应

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"

这个 websocket 只是回显你发送的任何内容,并且已经使用浏览器验证了这一点。

但不是控制台显示我发送的内容。对于相同数量的 characters.e.g.

,它只打印 0N
q)neg[r]"test"
0N 0N 0N 0Ni

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

这与正在序列化的数据有关吗?我试过使用-9!在 .z.ws 中,但这没有用。

谢谢

成功创建 WebSocket returns 2 项列表 -(处理;HTTP 响应)。要发送请求,您需要使用 'Handle' 而不是完整的 WebSocket 对象。

使用带有输入的完整对象('r')基本上是在 2 项列表中进行索引。这就是为什么你得到的 '0N' 等于控制台上输入的长度,因为每个字符索引 returns 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