postal.js/example/node/node_modules/socket.io/examples/irc-output/app.js

76 lines
1.5 KiB
JavaScript

/**
* 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 );
} );