Bonjour à tous,

Voilà je viens de suivre le tutoriel sur NodeJS afin de faire un tchat, maintenant je voudrais savoir comment héberger ce projet pour tester les capacité, on m'a parler de AppFog, quelqu'un connaît ? Car j'ai essayer avec AppFog mais ça ne marche pas, ça mouline pour à la fin m'afficher une erreur 404!

Sinon sur qui l'héberger?

Anthony

18 réponses


La démo est sur AppFog mais ils ne supporte pas les sockets donc tu perds un peu l'intérêt du truc. Voila un pti tableau comparatif : https://github.com/joyent/node/wiki/Node-Hosting

Ok, merci. Oui je viens d'essayer d'héberger mon projet sur AppFog mais ça ne marche pas.

Merci pour le tableau je vais checker.

Comment l'héberger?
Sur un serveur mutualisé chez OVH c'est impossible n'est-ce pas?

Après quelques recherches, AppFog prends en compte les Sockets, il prends même en compte les projets ExpressJS ou CompoundJS utilisant Express.io. Don AppFog est pour moi la meilleur façon pour hébergé une App NodeJS, gratuit, simple et performant.

Comment t'y es tu pris stp?
Je n'y comprend pas grand chose avec AppFog

J'ai créé un app Node j'ai uploadé mes fichier depuis la console, mais j'obtiens un serveur qui ne veut plus démarrer... comment vous y êtes vous pris svp?

Tu as fais ces commandes?

af login
af update appname

Si oui alors dis moi les ereurs, si tu ne vois rien alors fais cette commande pour les voir:

af --logs appname

Donc enfait j'ai bien fais ce que tu me dis,
mon site devrait se trouver à cet endroit : ucim-chat

et lorsque je fais af logs appnam j'obtiens cela :

Je ne comprend pas pourquoi ca ne fonctionne pas...
Merci pour ton aide tonymx227 :)

Ton serveur tu l'appel comment? app.js ou server.js?

Peux-tu me donner le contenue de "app.js" ou "server.js"?

Voici le code de server.js

var http = require('http');
var md5 = require('MD5');
httpServer = http.createServer(function(req,res){
    console.log("Un utilisateur a affiché le message");
});
httpServer.listen(1337);
var io = require('socket.io').listen(httpServer);
var users = {};
var messages = ];
var history = 20;
io.sockets.on('connection',function(socket){
    var me = false;
    console.log('Nouvel utilisateur');
    for(var k in users){
        soket.emit('newusr', users[k]);
    }
    for(var k in messages){
        soket.emit('newmsg', messages[k]);
    }
    /**
    ** On a recu un message
    **/
    socket.on('newmsg',function(message){
        message.user = me;
        date = new Date();
        message.h = date.getHours();
        message.m = date.getMinutes();
        messages.push(message);
        if(messages.length > history){
            messages.shift();
        }
        io.sockets.emit('newmsg',message);
    })
    /**
    ** Je me connecte
    **/
    socket.on('login',function(user){
        me = user;
        me.id = user.mail.replace('@','-').replace('.','-');
        me.avatar = 'https://gravatar.com/avatar/'+ md5(user.mail) +'?s=50';
        socket.emit('logged');
        users[me.id] = me;
        io.sockets.emit('newusr', me);
    });
    /**
    ** Je quitte le tchat
    **/
    socket.on('disconnect',function(){
        if(!me){
            return false;
        }
        delete users[me.id];
        io.sockets.emit('disusr', me);
    });
});

Essaye avec ça...

httpServer.listen(process.env.PORT || 1337);

Sinon est-ce qu'il marche en local ton tchat?

Est lorsque tu choisis de créer une nouvelle App sur AppFog tu choisis bien NodeJS Chat : http://grab.by/mT4y (celle du millieu)

J'ai essayé pas mieux...
Il fonctionne en local, ne manque plus que le css...
A la base j'avais créé un App NodeJS, mais la j'ai testé en NodeJS chat, et même soucis...

Enfait dans l'ordre,
je vais sur appFog, je choisis de créer une App avec nodeJS chat, hébergé en Irlande.
Ensuite je passe par la commande dos, je vais dans mon dossier local ou se trouve le chat, et je tape :

af login

Je rentre mes id...
Puis je tape :

af update appnam

La il charge mes fichiers vers le serveur je pense.
Tout est ok, aucunes erreur...

Quand je vais sur le site ca mouline et il n'y a rien...

Merci pour le temps que tu passes pour résoudre mon soucis tonymx227

Voilà un App.js qui marche sur AppFog. Il faut que tu ajoute le transport XHR.

app.io.set('transports', 'xhr-polling']);

var express = require('express.io')
  , http = require('http')
  , path = require('path');
var app = express();
app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});
app.http().io();
app.io.set('transports', 'xhr-polling']);
app.configure('development', function(){
  app.use(express.errorHandler());
});
app.get('/', function(req, res) {
  res.render('index', {
    title: 'Tchat using Express.io'
  });
});
app.io.route('newmsg', function(req) {
  console.log(req.data.message);
});
http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

Ca ne fonctionne pas... :(

Je ne comprends pas car ça marche de mon côté. Tu devrais envoyer un message à AppFog. Ils répondent très vite pour ce genre de problème car je pense que le problème viens de ton App pas de ton code, étant donner que de mon coter ça marche là je ne vois pas quoi te dire de plus à changer.

Par contre je peux que te conseiller de développer tes Apps avec ExpressJS c'est beaucoup plus facile et beaucoup plus propre. Si tu veux travailler en MVC alors je te conseille CompoundJS (mon site réaliser avec CompoundJS et hosté sur AppFog : anthonycluse.fr).

Ok merci, je vais envoyer un message a AppFog ;)
Merci pour ton aide.

Enfait le soucis viendrait surement de mon index.html genre là :

<script src="http://127.0.0.1:1337/socket.io/socket.io.js"></script>

Ce 127.0.0.1:1337...
Que dois je mettre pour le passer en prod?
Moi j'ai remplacé par <script src="/socket.io/socket.io.js"></script>

<script src="http://adressedetonapp:1337/socket.io/socket.io.js"></script>

Mais moi j'utilise Express.io donc je ne prossède pas comme ça, essaye plutôt de faire ton tchat avec Exress, tu rencontraras moins de problème.