2012-10-23 14:07:28 -07:00
// Generated by CoffeeScript 1.4.0
2011-11-06 12:21:27 -08:00
( function ( ) {
2013-05-01 12:51:59 -07:00
var REDIS _SERVER , SECURE , ca , certificate , fs , io , log , privateKey , redis ;
2011-11-06 12:21:27 -08:00
fs = require ( 'fs' ) ;
redis = require ( 'redis' ) ;
2013-05-01 12:51:59 -07:00
log = require ( './log.js' ) ;
2013-08-12 12:39:03 -07:00
REDIS _SERVER = process . env . NODE _ENV === 'development' ? 'localhost' : 'db_redis_pubsub' ;
2012-03-28 19:13:30 -07:00
2012-12-24 11:53:00 -08:00
SECURE = ! ! process . env . NODE _SSL ;
if ( SECURE ) {
privateKey = fs . readFileSync ( './config/certificates/newsblur.com.key' ) . toString ( ) ;
certificate = fs . readFileSync ( './config/certificates/newsblur.com.crt' ) . toString ( ) ;
ca = fs . readFileSync ( './config/certificates/intermediate.crt' ) . toString ( ) ;
io = require ( 'socket.io' ) . listen ( 8889 , {
key : privateKey ,
cert : certificate ,
ca : ca
} ) ;
} else {
io = require ( 'socket.io' ) . listen ( 8888 ) ;
}
2012-04-10 09:54:43 -07:00
io . configure ( 'production' , function ( ) {
2012-05-03 13:43:18 -07:00
io . set ( 'log level' , 1 ) ;
io . enable ( 'browser client minification' ) ;
io . enable ( 'browser client etag' ) ;
return io . enable ( 'browser client gzip' ) ;
2012-04-10 09:54:43 -07:00
} ) ;
io . configure ( 'development' , function ( ) {
return io . set ( 'log level' , 2 ) ;
} ) ;
2011-11-06 12:21:27 -08:00
io . sockets . on ( 'connection' , function ( socket ) {
2013-05-01 13:22:03 -07:00
var ip ;
2013-09-06 16:25:32 -07:00
ip = socket . handshake . headers [ 'X-Forwarded-For' ] || socket . handshake . address . address ;
2012-03-30 16:03:07 -07:00
socket . on ( 'subscribe:feeds' , function ( feeds , username ) {
2013-08-12 11:52:29 -07:00
var _ref ,
2012-04-10 10:09:46 -07:00
_this = this ;
2012-04-03 22:01:12 -07:00
this . feeds = feeds ;
this . username = username ;
2013-05-01 13:25:14 -07:00
log . info ( this . username , ( "Connecting (" + feeds . length + " feeds, " + ip + ")," ) + ( " (" + ( io . sockets . clients ( ) . length ) + " users on) " ) + ( " " + ( SECURE ? "(SSL)" : "(non-SSL)" ) ) ) ;
2013-04-08 10:23:26 -07:00
if ( ! this . username ) {
return ;
}
2013-08-12 11:52:29 -07:00
socket . on ( "error" , function ( err ) {
return console . log ( " ---> Error (socket): " + err ) ;
} ) ;
2012-10-22 16:25:36 -07:00
if ( ( _ref = socket . subscribe ) != null ) {
2013-08-12 11:52:29 -07:00
_ref . end ( ) ;
2012-10-22 16:25:36 -07:00
}
2012-03-28 19:13:30 -07:00
socket . subscribe = redis . createClient ( 6379 , REDIS _SERVER ) ;
2013-08-12 11:03:42 -07:00
socket . subscribe . on ( "error" , function ( err ) {
2013-08-12 11:20:00 -07:00
console . log ( " ---> Error: " + err ) ;
2013-08-12 11:22:10 -07:00
return socket . subscribe . end ( ) ;
2013-08-12 11:03:42 -07:00
} ) ;
2013-08-12 11:11:30 -07:00
socket . subscribe . on ( "connect" , function ( ) {
socket . subscribe . subscribe ( _this . feeds ) ;
return socket . subscribe . subscribe ( _this . username ) ;
} ) ;
2011-11-06 12:21:27 -08:00
return socket . subscribe . on ( 'message' , function ( channel , message ) {
2013-05-01 12:51:59 -07:00
log . info ( _this . username , "Update on " + channel + ": " + message ) ;
2012-10-22 16:25:36 -07:00
if ( channel === _this . username ) {
return socket . emit ( 'user:update' , channel , message ) ;
} else {
return socket . emit ( 'feed:update' , channel , message ) ;
}
2011-11-06 12:21:27 -08:00
} ) ;
} ) ;
return socket . on ( 'disconnect' , function ( ) {
2013-05-01 13:22:03 -07:00
var _ref , _ref1 ;
2012-10-22 16:25:36 -07:00
if ( ( _ref = socket . subscribe ) != null ) {
_ref . end ( ) ;
}
2013-05-01 12:51:59 -07:00
return log . info ( this . username , ( "Disconnect (" + ( ( _ref1 = this . feeds ) != null ? _ref1 . length : void 0 ) + " feeds, " + ip + ")," ) + ( " there are now " + ( io . sockets . clients ( ) . length - 1 ) + " users. " ) + ( " " + ( SECURE ? "(SSL)" : "(non-SSL)" ) ) ) ;
2011-11-06 12:21:27 -08:00
} ) ;
} ) ;
2013-08-12 11:52:29 -07:00
io . sockets . on ( 'error' , function ( err ) {
return console . log ( " ---> Error (sockets): " + err ) ;
} ) ;
2011-11-06 12:21:27 -08:00
} ) . call ( this ) ;