Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
initNode :: Cloud () -> TransIO () Source #
ask in the console for the port number and initializes a node in the port specified
It needs the application to be initialized with keep
to get input from the user.
the port can be entered in the command line with "program -p start/PORT"
A node is also a web server that send to the browser the program if it has been
compiled to JavaScript with ghcjs. initNode
also initializes the web nodes.
This sequence compiles to JScript and executes the program with a node in the port 8080
ghc program.hs ghcjs program.hs -o static/out ./program -p start/8080
initNode
, when the application has been loaded and executed in the browser, will perform a wormhole
to his server node.
So the application run within this wormhole.
Since the code is executed both in server node and browser node, to avoid confusion and in order
to execute in a single logical thread, use onServer
for code that you need to execute only in the server
node, and onBrowser
for code that you need in the browser, although server code could call the browser
and vice-versa.
To invoke from browser to server and vice-versa, use atRemote
.
To translate the code from the browser to the server node, use teleport
.
inputNodes :: Cloud b Source #
ask for nodes to be added to the list of known nodes. it also ask to connect to the node to get his list of known nodes
simpleWebApp :: Integer -> Cloud () -> IO () Source #
executes the application in the server and the Web browser.
the browser must point to http://hostname:port where port is the first parameter.
It creates a wormhole to the server.
The code of the program after simpleWebApp
run in the browser unless teleport
translates the execution to the server.
To run something in the server and get the result back to the browser, use atRemote
This last also works in the other side; If the application was teleported to the server, atRemote
will
execute his parameter in the browser.
It is necesary to compile the application with ghcjs:
ghcjs program.js ghcjs program.hs -o static/out
./program