websockify を介して、HTML5 ページから JSON-RPC サーバーに接続しています。
私のコードは、正規の websocket echo exampleに基づいています。擬似コードは次のとおりです。
HTML 部分:
<P id="testview"></P>
スクリプト部分:
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; }
最終的には結果を JSON で解析したいと思いますが、最初のステップは解析せずに表示できるようにすることです。
ただし、現在、el
このコードによって生成される表示は[Object BLOB]
.
などを表示するにはどうすればよいですか{ "method" : "blabla",
。つまり、受信したデータの実際の内容 (人間が読める ASCII) です。
の出力console.log(evt.data)
は次のとおりです。
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
WebSocket を['base64']
バイナリではなく as で開くように変更し、リクエストを base64 エンコードすると、操作できる base64 文字列が返されます。ただし、JSON-RPC であるプレーン ASCII を送受信するだけと比較すると、帯域幅とエンコードの無駄のように思えます。
注意。HTML5 から JSON-RPC と対話する方法に関する別の提案も歓迎します。