/** * Module dependencies. */ var express = require( 'express' ) , stylus = require( 'stylus' ) , nib = require( 'nib' ) , sio = require( '../../lib/socket.io' ) , irc = require( './irc' ); /** * App. */ var app = express.createServer(); /** * App configuration. */ app.configure( function () { app.use( stylus.middleware( { src : __dirname + '/public', compile : compile } ) ) app.use( express.static( __dirname + '/public' ) ); app.set( 'views', __dirname ); app.set( 'view engine', 'jade' ); function compile( str, path ) { return stylus( str ) .set( 'filename', path ) .use( nib() ); } ; } ); /** * App routes. */ app.get( '/', function ( req, res ) { res.render( 'index', { layout : false } ); } ); /** * App listen. */ app.listen( 3000, function () { var addr = app.address(); console.log( ' app listening on http://' + addr.address + ':' + addr.port ); } ); /** * Socket.IO server */ var io = sio.listen( app ) /** * Connect to IRC. */ var client = new irc.Client( 'irc.freenode.net', 6667 ); client.connect( 'socketio\\test\\' + String( Math.random() ).substr( -3 ) ); client.on( '001', function () { this.send( 'JOIN', '#node.js' ); } ); client.on( 'PART', function ( prefix ) { io.sockets.emit( 'announcement', irc.user( prefix ) + ' left the channel' ); } ); client.on( 'JOIN', function ( prefix ) { io.sockets.emit( 'announcement', irc.user( prefix ) + ' joined the channel' ); } ); client.on( 'PRIVMSG', function ( prefix, channel, text ) { io.sockets.emit( 'irc message', irc.user( prefix ), text ); } );