BERT in JS

54 views
Skip to first unread message

Taras J. Honcharuk

unread,
Aug 15, 2017, 8:45:14 AM8/15/17
to Erlang в Україні
Привет всем.
Кто может подсказать чем лучше декодировать BERT со стороны JavaScript?

В Erlang отправляю через websocket
например
websocket_hadle(_Msg, State) ->
    Message = {<<"new">>, <<"test">>},
    {reply, {binary, bert:encode(Message)}, State};

как в js можно получить бинрные значения из кортежа?

Volodymyr Stolyarchuk

unread,
Aug 15, 2017, 1:20:02 PM8/15/17
to erlang-i...@googlegroups.com
вот вроде есть https://github.com/rustyio/BERT-JS
но она устаревшая и думаю без поддержки мапов.
Я когда-то пытался дописать.. но плюнул на это и сериализировал в json
и там, вроде, на серевере не надо никаких сериализаторов в берт.. достаточно term_to_binary({ok,<<"hello">>})

--
Ви отримали це повідомлення, оскільки ви підписані на групу "Erlang в Україні" у Групах Google.
Щоб скасувати підписку на цю групу та більше не отримувати повідомлень із неї, надішліть електронний лист на адресу erlang-in-ukraine+unsubscribe@googlegroups.com.
Щоб опублікувати допис у цій групі, надішліть електронний лист на адресу erlang-in-ukraine@googlegroups.com.
Перейдіть до цієї групи за посиланням https://groups.google.com/group/erlang-in-ukraine.



--
Best regards, Volodymyr

Taras J. Honcharuk

unread,
Aug 16, 2017, 1:12:09 AM8/16/17
to Erlang в Україні
Спасибо за ответ
term_to_binary попробую
BERT-JS пробовал
но проблема в том что в JS я получаю точно такой тапл как и отправлял
var bertFromWs = {<<"new">>,<<"test">>}
в идеале хотелось получить нечто вроде JSON
var json["new"] = test

есть еще проект https://github.com/okeuday/erlang_js
но там документации ноль
а в js-коде я разобраться не могу :(

вторник, 15 августа 2017 г., 20:20:02 UTC+3 пользователь Volodymyr Stolyarchuk написал:
вот вроде есть https://github.com/rustyio/BERT-JS
но она устаревшая и думаю без поддержки мапов.
Я когда-то пытался дописать.. но плюнул на это и сериализировал в json
и там, вроде, на серевере не надо никаких сериализаторов в берт.. достаточно term_to_binary({ok,<<"hello">>})
2017-08-15 15:45 GMT+03:00 Taras J. Honcharuk <taras.h...@gmail.com>:
Привет всем.
Кто может подсказать чем лучше декодировать BERT со стороны JavaScript?

В Erlang отправляю через websocket
например
websocket_hadle(_Msg, State) ->
    Message = {<<"new">>, <<"test">>},
    {reply, {binary, bert:encode(Message)}, State};

как в js можно получить бинрные значения из кортежа?

--
Ви отримали це повідомлення, оскільки ви підписані на групу "Erlang в Україні" у Групах Google.
Щоб скасувати підписку на цю групу та більше не отримувати повідомлень із неї, надішліть електронний лист на адресу erlang-in-ukra...@googlegroups.com.
Щоб опублікувати допис у цій групі, надішліть електронний лист на адресу erlang-i...@googlegroups.com.

Перейдіть до цієї групи за посиланням https://groups.google.com/group/erlang-in-ukraine.



--
Best regards, Volodymyr

Taras J. Honcharuk

unread,
Aug 16, 2017, 1:23:07 AM8/16/17
to Erlang в Україні
Спасибо
term_to_binary действительно работает
отлично


вторник, 15 августа 2017 г., 20:20:02 UTC+3 пользователь Volodymyr Stolyarchuk написал:
вот вроде есть https://github.com/rustyio/BERT-JS
но она устаревшая и думаю без поддержки мапов.
Я когда-то пытался дописать.. но плюнул на это и сериализировал в json
и там, вроде, на серевере не надо никаких сериализаторов в берт.. достаточно term_to_binary({ok,<<"hello">>})
2017-08-15 15:45 GMT+03:00 Taras J. Honcharuk <taras.h...@gmail.com>:
Привет всем.
Кто может подсказать чем лучше декодировать BERT со стороны JavaScript?

В Erlang отправляю через websocket
например
websocket_hadle(_Msg, State) ->
    Message = {<<"new">>, <<"test">>},
    {reply, {binary, bert:encode(Message)}, State};

как в js можно получить бинрные значения из кортежа?

--
Ви отримали це повідомлення, оскільки ви підписані на групу "Erlang в Україні" у Групах Google.
Щоб скасувати підписку на цю групу та більше не отримувати повідомлень із неї, надішліть електронний лист на адресу erlang-in-ukra...@googlegroups.com.
Щоб опублікувати допис у цій групі, надішліть електронний лист на адресу erlang-i...@googlegroups.com.

Перейдіть до цієї групи за посиланням https://groups.google.com/group/erlang-in-ukraine.



--
Best regards, Volodymyr

Volodymyr Stolyarchuk

unread,
Aug 16, 2017, 1:50:09 PM8/16/17
to erlang-i...@googlegroups.com
2017-08-16 8:12 GMT+03:00 Taras J. Honcharuk <taras.h...@gmail.com>:
Спасибо за ответ
term_to_binary попробую
BERT-JS пробовал
но проблема в том что в JS я получаю точно такой тапл как и отправлял
var bertFromWs = {<<"new">>,<<"test">>}
в идеале хотелось получить нечто вроде JSON

Вот это была одна из причин почему я  забросил BERT, тоже хотел что-то вроде json но ерлагновыские структуры это не json такую структуру {ok, <<hello>>, 1} можно спокойно передать закодировав через bert, но вот что с этим делать на клиенте это уже вопрос.
Можно дописать что-то на клиенте которое будет переводить в bert, но тогда с сервера надо отправлять что-то похожее на json (мапы или проплисты)
Но если сервер будет контролировать чтобы отдаваать такие структуры тогда уже и от bert смысла так как любая хорошая библиотека эти структуры сможет перекодировать в json (ну разве что слишком дорого сама операция кодирования json)

в общем я не особо понимаю смысла применять берт для общения с js-клинетом

Щоб скасувати підписку на цю групу та більше не отримувати повідомлень із неї, надішліть електронний лист на адресу erlang-in-ukraine+unsubscribe@googlegroups.com.
Щоб опублікувати допис у цій групі, надішліть електронний лист на адресу erlang-in-ukraine@googlegroups.com.

Перейдіть до цієї групи за посиланням https://groups.google.com/group/erlang-in-ukraine.



--
Best regards, Volodymyr

Taras J. Honcharuk

unread,
Aug 17, 2017, 1:36:24 AM8/17/17
to Erlang в Україні
BERT в отличии от JSON может передавать в одном блоке одновременно и text и binary, потому за него и зацепился.
Я нашел решение которое для меня подходит. 
В bert.js поправил

function BertBinary(Obj) {
this.type = "Binary";
this.value = Obj;
this.toString = function () {
return  Obj;
// return "<<\"" + Obj + "\">>";
};
}

и получаю в переменную чистый binary. Но опять же такое решение подходит конкретно для моей задачи.


среда, 16 августа 2017 г., 20:50:09 UTC+3 пользователь Volodymyr Stolyarchuk написал:

Сергей Прохоров

unread,
Aug 17, 2017, 5:01:42 AM8/17/17
to Erlang в Україні
Если очень хочется бинарные данные передавать, то можно попробовать msgpack
https://github.com/kawanet/msgpack-lite

четверг, 17 августа 2017 г., 7:36:24 UTC+2 пользователь Taras J. Honcharuk написал:

Taras J. Honcharuk

unread,
Aug 18, 2017, 1:11:38 AM8/18/17
to Erlang в Україні
После моих исправлений BERT делает то же самое что и msgpack :)
Спасибо за подсказки

четверг, 17 августа 2017 г., 12:01:42 UTC+3 пользователь Сергей Прохоров написал:
Reply all
Reply to author
Forward
0 new messages