[erlang-questions] Decoding term_to_binary in javascript

Paul Davis <>
Tue Nov 15 22:07:50 CET 2011


Another cute hack I've heard about was to paste a PNG header onto the
binary data and then use an Image object to load the URL. I think I
heard about this from the project that implemented Flash player in
JavaScript and needed a way to load the SWF files.

On Tue, Nov 15, 2011 at 2:42 PM, Joe Armstrong <> wrote:
> To anser my own question it's not so easy.
> A bert encoded term starts <<131, ...>>
> Now 131 is not a single byte UTF8 character -  when I make
> an ajax call from jquery in the browser the ajax stuff tryoes to convert the
> blob containing a <<128,...>> to a utf8 string
> and the decoding fails.
> There are some html5 extensions -- something like
>      var r = new XMLHttpRequest();
>      r.open("GET", "get_bert", true);
>      r.responseType = "arraybuffer"
>
>       r.onload = function(e) {   // XHR2
>          var arr = new Uint8Array(this.response);
> seems to work - but the exiting libraries cannot decode
> a Unit8Array :-(
> Why the heck sockets and ajax calls can't just sent back
> sequences of bytes and not mess with them is a mystery to me
> /Joe
>
> On Tue, Nov 15, 2011 at 2:56 PM, Joe Armstrong <> wrote:
>>
>> This looks good.
>> Another question.
>> Has anybody an example client-server example of bert?
>> I'm thinking:
>>            server in erlang  = bert + mochiweb/misultin/cowboy/yaws ...
>>            client in browser = jquery + bert
>>
>> Id like to make an ajax RPC from the client that returns a bert blob
>> unpacks the blob and displays the result.
>>
>> /Joe
>> On Tue, Nov 15, 2011 at 1:35 PM, Ulf Wiger <> wrote:
>>>
>>> If you can settle for BERT, I think there are some JavaScript
>>> implementations out there:
>>>
>>> https://github.com/rtomayko/node-bertrpc/blob/master/src/bert.js
>>>
>>> BR,
>>> Ulf W
>>>
>>> On 15 Nov 2011, at 12:57, Joe Armstrong wrote:
>>>
>>> > I'd like to send a term_to_binary encoded term to a web client and
>>> > decode it in javascript.
>>> >
>>> > If I could do this it would eliminate the impedance mismatch between
>>> > server-side databases
>>> > and client code in a browser. I want to totally eliminate conversions
>>> > to and from JSON. Just send
>>> > raw blobs containing term_to_binary encoded data and pluck what I want
>>> > in the client.
>>> >
>>> > I would not necessarily want to decode the entire blob, I might just
>>> > want to extract a specific item
>>> > So for example if In Erlang I created a blob by saying
>>> >
>>> >       Blob = term_to_binary({thing,"foo","bar",["baz"]})
>>> >
>>> > I'd like to send this to a browser and in Javascript say:
>>> >
>>> >      var z = mylib_hd(my_lib_element(4,Blob))
>>> >
>>> > Whereby z would be the javascript string "baz".
>>> >
>>> > Has anybody implemented anything like this?
>>> >
>>> > /Joe
>>> >
>>> >
>>> >
>>> > _______________________________________________
>>> > erlang-questions mailing list
>>> > 
>>> > http://erlang.org/mailman/listinfo/erlang-questions
>>>
>>
>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
>



More information about the erlang-questions mailing list