[erlang-questions] Decoding term_to_binary in javascript

Joe Armstrong <>
Tue Nov 15 21:42:38 CET 2011


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
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20111115/88ab01b1/attachment.html>


More information about the erlang-questions mailing list