[erlang-questions] ANN: ezwebframe - an easy web framework

Christopher Meiklejohn <>
Wed Dec 19 16:53:16 CET 2012


On Wednesday, December 19, 2012 at 6:58 AM, Joe Armstrong wrote:
> > But how the browser understand the commands you send from erlang process? for 
> > example here: {cmd, fill_div}
> 
> 
> This is easy, here's an overview:
> 
> - Convert the Erlang command to JSON
> - send the JSON on the websocket uing Erlang
> - receive the JSON in Javascript
> - parse the JSON
> - build a Javascript command
> - execute the Javascript command


Hi Joe,

Thank you for putting this out there, I had a great time digging through the source code learning how the examples worked.  

I found it so inspiring that I went off and started playing around with some alternative approaches to handling the messages on the JavaScript side.  See here: [1]

I've been exploring having the messages, when received on the JavaScript side, distributed using a pub/sub approach so the Erlang code doesn't have to know about JavaScript function names or argument lists.  I felt this made it feel a bit less RPC-ish and made it feel a bit more idiomatic.  See below for examples.

One thing that I couldn't get a hold of when playing with your code was if you intended to write *most* of the client side application in Erlang and just write a thin-layer in JavaScript for event handling and DOM-manipulation or if you were leaving that up to the developer.

Again, thanks so much!

--

For example (partially taken from the README):

Given the following Erlang:

BrowserPid ! {client_count, 1}. 

The following message is sent on the wire:
{ type: "client_count", message: "1" } 

Followed by the following message published via AmplifyJS:
amplify.publish("client_count", 1);

This allows multiple consumers in your JavaScript application to subscribe to these messages and respond to them accordingly.  A subscriber could then call a method to update the DOM with that new value (via jQuery or whatever, this is no longer specific).

[1] https://github.com/cmeiklejohn/piper

--

Christopher Meiklejohn
Software Engineer
Basho Technologies, Inc. 





More information about the erlang-questions mailing list