Hello, i'm a beginer with node.js and just now i try to learn
best practice of how to implement a socket.io module to
my node.js testwebsite. 
----------------------------------------------------
server use :

node.js 5
express 4
socket.io 1.4
----------------------------------------------------
client use :

JQuery 1.10
----------------------------------------------------
directory structure :

dir bin
    dir js
        - server.js

dir public
    - index.js

dir routes
    - index.js

dir socket
    -app.socket.io.js

app.js
browserify.js
package.json
----------------------------------------------------

*bin/server.js contains*


var console = require('console');
var app = require('../app');
var debug = require('debug')('ScriptShareing:server');
var http = require('http');

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

var server = http.createServer(app);

var socket = require('../socket/app.socket.io')(server);

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

function normalizePort(val) {
    var port = parseInt(val, 10);
    return (isNaN(port)) ? val : ((port >= 0) ? port : FALSE);
}

function onError(error) {
    if (error.syscall !== 'listen') { throw error; }

    var bind = typeof port === 'string'
        ? 'Pipe ' + port
        : 'Port ' + port;

    // handle specific listen errors with friendly messages
    switch (error.code) {
        case 'EACCES':
            console.error(bind + ' requires elevated privileges');
            process.exit(1);
            break;
        case 'EADDRINUSE':
            console.error(bind + ' is already in use');
            process.exit(1);
            break;
        default:
            throw error;
    }
}

function onListening() {
    var addr = server.address();
    var bind = typeof addr === 'string'
        ? 'pipe ' + addr
        : 'port ' + addr.port;
    debug('Listening on ' + bind);
}


*socket/app.socket.io.js contains*

var console = require('console');

module.exports = function (server) {

   var io = require('socket.io')(server);

   io.on('connection', function (socket) {

      console.log('a user connected');

      var userIsSet = false;

      socket.on('add user', function (username) {

         username = username.replace(/\s/g,'');

         if (username.length) {

            socket.username = username;
            userIsSet = true;

            socket.emit('login success');
            io.emit('new user', {timestamp:new Date(), username:username});

         } else {
            socket.emit('login error');
         }

      });

      socket.on('chat message', function (data) {
         data.timestamp = new Date();
         io.emit('chat message', data);
      });

      socket.on('disconnect', function () {
         console.log('user disconnected');
      });
   });

};


*app.js containes*

var console = require('console');
var express = require('express');
var path = require('path');
var app = express();

var routes = require('./routes/index');

app.use('/', routes);
app.use(express.static(path.join(__dirname, 'public')));
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');

// catch 404 and forward to error handler
app.use(function(req, res, next) {
    console.log('error: ', typeof Error);
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

// development error handler
// will print stacktrace
if (app.get('env') !== 'development') {
} else {
    app.use(function (err, req, res) {
        res.status(err.status || 500);
        res.render('error', {
            message: err.message,
            error: err
            //error: {}
        });
    });
}



*routes/index.js contains*

var console = require('console');
var express = require('express');
var router = express.Router();

router.get('/', function (req, res) {
   var view = {
      title:'NetCoApp Node Chat',
      text:'Welcome, you are visting our Node Test Chat!'
   };
   res.render('index',view);
});

module.exports = router;




There are many ways to implement socket.io and the socket-handling, now i 
include app.socket.io-script
in server.js but i'm not shure that this is the best practice. 

Grateful about any answer,
Stefan



-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/8ee15b2b-7b96-4b3a-be03-977954991aa9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to