我通过websockify从HTML5页面连接到JSON-RPC服务器。
我的代码基于canonical websocket echo example。伪代码如下:
在HTML部分:
el = document.getElementById("testview");
var sock = new WebSocket("ws://localhost:5555", ['binary'] );
sock.onopen = function(evt) { onOpen(evt) }; // sends request
sock.onmessage = function(evt) { el.innerHTML = evt.data; }
在脚本部分:
el
最终我想让JSON解析结果,但第一步是能够显示未解析的结果。
但目前,此代码在[Object BLOB]
中生成的显示为{ "method" : "blabla",
。
如何显示console.log(evt.data)
等,即接收数据的实际内容(人类可读的ASCII)。
Blob {}
size: 74
type: ""
__proto__: Blob
constructor: Blob() { [native code] }
size: (...)
get size: () { [native code] }
slice: slice() { [native code] }
type: (...)
get type: () { [native code] }
__proto__: Object
的输出是:
['base64']
如果我将WebSocket改为打开为[
{
"ORDER": 1,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 07 AM",
"UV_VALUE": 0
},
{
"ORDER": 2,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 08 AM",
"UV_VALUE": 1
},
{
"ORDER": 3,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 09 AM",
"UV_VALUE": 1
},
{
"ORDER": 4,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 10 AM",
"UV_VALUE": 2
},
{
"ORDER": 5,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 11 AM",
"UV_VALUE": 3
},
{
"ORDER": 6,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 12 PM",
"UV_VALUE": 7
},
{
"ORDER": 7,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 01 PM",
"UV_VALUE": 6
},
{
"ORDER": 8,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 02 PM",
"UV_VALUE": 6
},
{
"ORDER": 9,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 03 PM",
"UV_VALUE": 7
},
{
"ORDER": 10,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 04 PM",
"UV_VALUE": 5
},
{
"ORDER": 11,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 05 PM",
"UV_VALUE": 3
},
{
"ORDER": 12,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 06 PM",
"UV_VALUE": 1
},
{
"ORDER": 13,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 07 PM",
"UV_VALUE": 0
},
{
"ORDER": 14,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 08 PM",
"UV_VALUE": 0
},
{
"ORDER": 15,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 09 PM",
"UV_VALUE": 0
},
{
"ORDER": 16,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 10 PM",
"UV_VALUE": 0
},
{
"ORDER": 17,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 11 PM",
"UV_VALUE": 0
},
{
"ORDER": 18,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 12 AM",
"UV_VALUE": 0
},
{
"ORDER": 19,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 01 AM",
"UV_VALUE": 0
},
{
"ORDER": 20,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 02 AM",
"UV_VALUE": 0
},
{
"ORDER": 21,
"ZIP": 19021,
"DATE_TIME": "MAY/27/2015 03 AM",
"UV_VALUE": 0
}
]
而不是二进制,并且我对我的请求进行了base64编码,那么我会找回一个我能够使用的base64字符串。然而,与仅发送和接收JSON-RPC的纯ASCII相比,这似乎浪费了带宽和编码。
NB。关于如何从HTML5与JSON-RPC对话的任何其他建议也是受欢迎的。