Building websites with Node.ACS
- 2. About me
1. Have been using Titanium since late 2009
2. Former Titanium trainer in the Caribbean and Latin America
3. Currently work as Lead Developer Evangelist
4. Obsessed with cross-platform mobile develoment
5. Love Javascript hacking and technology startups
6. I'm a hacker in constant training
- 3. What is Node.ACS
1. Develop and publish node.js apps to the cloud
2. Simple CLI interface and built-in webserver
3. Built-in ACS support
4. Integrated with Titanium Studio
5. It's Javascript but for the server!
- 4. Install Node.ACS
Node.ACS runs on top of node.js
Studio installs Node and NPM by default
If you don't, install it from http://nodejs.org/
Run node -v to make sure you have it and then install ACS
node -v
sudo npm install -g acs
- 12. Config.json
{
"routes":
[
{ "path": "/", "callback": "application#index" }
],
"filters":
[
{ "path": "/", "callback": "" }
],
"websockets":
[
{ "event": "", "callback": ""}
]
}
Callbacks are in filename#functionname format
Default HTTP Method is GET. For post we need to add
"method":"post"
Web Sockets are a whole different talk. More info at
http://socket.io/
- 14. A simple Web Site
(config.json)
{
"routes":
[
{ "path": "/", "callback": "application#index" },
{ "path": "/home", "callback": "application#home" },
{ "path": "/login", "method":"post", "callback": "application#login" },
{ "path": "/logoff", "callback": "application#logoff" }
],
"filters":
[
{ "path": "/home", "callback": "session_filter#validateSession" }
],
"websockets":
[
{ "event": "", "callback": ""}
]
}
- 15. Configure your app to track
sessions
(app.js)
// initialize app
function start(app, express) {
//set favicon
app.use(express.favicon(__dirname + '/public/images/favicon.ico'));
//instantiate session management
app.use(express.session({secret: '1234567890QWERTY'}));
}
// release resources
function stop() {
}
There's more to sessions. See http://expressjs.com
- 16. A simple Web Site
(application.js)
function index(req, res) {
res.render('index', { title: 'Welcome to Node.ACS!' });
}
function login(req, res) {
var uid=req.body.uid;
var pwd=req.body.pwd;
var name=req.body.name;
if (uid==='appc' && pwd=='nodeacs'){
req.session.uid=uid;
req.session.pwd=pwd;
req.session.name=name;
res.redirect('/home');
}else{
res.send(500, { error: 'something blew up' });
}
}
function logoff(req, res) {
req.session.uid=null;
req.session.pwd=null;
req.session.name=null;
res.redirect('/');
}
function home(req, res) {
res.render('home', { title: req.session.name });
}