Bonjour, je viens de finir le cours node.js et tout fonctionne à merveille.
Toutefois, j'ai un problème lorsque j'essai de le déployer sur mon site.
En local, je faisais une écoute sur le port 412 avec la connexion au socket.io sur localhost:412. Idem sur mon serveur web, avec ipserveur:412, tout fonctionnait à l'adresse ipserveur:42/index.html, le chat était en ligne.
Je veux maintenant le déployer sur mon site web. Comment faire sachant que celui ci écoute sur le port 80 de base ? J'ai tenté de remplacé le server.listen(412) par server.listen(80) mais cela ne fonctionne pas.
ton site est en local? est ce que tu fait tourner un serveur web à coté de node.js? est ce que tu as mis ton site sur un hébergeur qui fonctionne avec node js?
Si tu t'es fait un serveur local que tu as déjà un site qui tourne et que tu viens d'installé node.js ton application est en conflit avec ton site ...
Il faudrait que tu fasse écouter ton appli sur un autre port (8080 par exemple) et dans ce cas tu fais une redirection ou tu met dans ton site un lien avec le port inclue dedans....
CQE, si ça t'intéresse, y a un tableau (totalement illisible mais tu peux facilement récupérer le contenu pour mettre ça au propre) des hébergeurs dans le github de node.
Bonne journée !
- Edité par Airin 13 août 2014 à 14:18:06
Apprendre peut être long et difficile, mais abandonner n'accélère certainement pas le processus.
Après presque 2 jours j'ai trouvé mon erreur, et la je sais pas si on peut faire plus con: j'inversé req et res dans les arguments de mes fonctions par rapport au tuto Sans commentaires ok ? Je suis déjà suffisament dégoûté x)
Bizarre... car en reprenant ton code (en le tapant moi même donc sans inverser) je plantais aussi tant que je ne plaçais pas ce "use" après mes routes... ... ... je revérifierai tiens...
Tant mieux en tout cas
Au moins, tu y penseras pour la prochaine fois !
Bonne soirée !
- Edité par Airin 14 août 2014 à 8:24:29
Apprendre peut être long et difficile, mais abandonner n'accélère certainement pas le processus.
Je suis en train de réaliser le tchat du tutoriel, mais j'ai toujours un problème avec socket.io, j'ai cherché sur le net mais je n'ai toujours pas réussi à le résoudre; mon code ne contient pas d'erreur, mais mon socket.io ne renvoie aucune information dans la console.
Voici mon code js:
var http = require("http");
var fs = require("fs");
//création deu serveur
var server = http.createServer(function(req, res){
/*fs.readFile("index.html", "utf-8", function(error, content){
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
});*/
console.log("Un utilisateur a affiché la page !");
res.end("Hello world");
});
server.listen(8080);
//chargement du socket.io
var io = require("socket.io").listen(server);
Parce que, je te ferais remarquer que la variable io est censée être utilisée pour créer des gestionnaires d’événements qui réagiront à la connexion effectuée en l.17 de ton HTML, par exemple...
var http = require("http");
var fs = require("fs");
//création deu serveur
var server = http.createServer(function(req, res){
/*fs.readFile("index.html", "utf-8", function(error, content){
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
});*/
console.log("Un utilisateur a affiché la page !");
res.end("Hello world");
});
server.listen(8080);
//chargement du socket.io
var io = require("socket.io").listen(server);
le code de matéo21 :
var http = require('http');
var fs = require('fs');
// Chargement du fichier index.html affiché au client
var server = http.createServer(function(req, res) {
fs.readFile('./index.html', 'utf-8', function(error, content) {
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
});
});
// Chargement de socket.io
var io = require('socket.io').listen(server);
// Quand on client se connecte, on le note dans la console
io.sockets.on('connection', function (socket) {
console.log('Un client est connecté !');
});
server.listen(8080);
je vois quelques petites differences comme l'emplacement de "server.listen(8080);" l'appel de l'index.html. et encore un ou 2 truc....
je suppose que :
/*fs.readFile("index.html", "utf-8", function(error, content){
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
});*/
console.log("Un utilisateur a affiché la page !");
res.end("Hello world");
est une modificatif pour voir si localhost:8080 fonctionne?
en reprenant ton code :
var http = require("http");
var fs = require("fs");
//création deu serveur
var server = http.createServer(function(req, res){
fs.readFile("./index.html", "utf-8", function(error, content){
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
});
console.log("Un utilisateur a affiché la page !");
});
//chargement du socket.io
var io = require("socket.io").listen(server);
server.listen(8080);
et la ca marche beaucoup mieux
il ne te restera plus qu'a ajouter (avant "server.listen(8080);" ça va de soit...) :
// Quand on client se connecte, on le note dans la console
io.sockets.on('connection', function (socket) {
console.log('Un client est connecté !');
});
pour que socket.io serve au moins a quelque chose (cette partie la attend une réponse de la page consulté sur localhost)
Perso je craque je vais voir si je ne peux pas installer une VM ultralight (base debian/ubuntu) pour continuer les test de node js car certaines dépendances sous windows .... c'est pas ca !
il pleut des message de mise en garde voir des messages d'erreur dès qu'on essaie d'utiliser autre chose que express et socket.io
Merci pour ta réponse, j'ai remis de l'ordre dans mon code mais malgré ça, j'en suis toujours au même point: pas d'erreur mais toujours pas de message de la part de socket.io.
Par contre j'ai remarqué que le code suivant ne donne rien:
//quand un client se connecte, on le note dans la console
io.sockets.on("connection", function(socket){
console.log("Un client est connecté !");
});
Aucun message ne s'affiche dans la console, je vais chercher de ce côté pour le moment mais si vous avez des pistes surtout n'hésitez pas
@Maastok : bizarre ... tu charge au moins la page HTML ? parce que ta page une fois chargé exécute :
<script type="text/javascript">
var socket = io.connect("http://localhost:8080");
</script>
et c'est
//quand un client se connecte, on le note dans la console
io.sockets.on("connection", function(socket){
console.log("Un client est connecté !");
});
qui reçois ta requête ...
Et ta page HTML : j'ai rien changé et ça marche ...
Et que se passe t'il quand tu fait un copié collé tout bête du code du cour ou le mien? (voir ci dessous, un simple CC , "sans essayer de recopier le code avec ses petit doigts" pour voir ce qui se passe)
var http = require("http");
var fs = require("fs");
//création deu serveur
var server = http.createServer(function(req, res){
fs.readFile("index.html", "utf-8", function(error, content){
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
});
console.log("Un utilisateur a affiché la page !");
});
//chargement du socket.io
var io = require("socket.io").listen(server);
// Quand on client se connecte, on le note dans la console
io.sockets.on('connection', function (socket) {
console.log('Un client est connecté !');
});
server.listen(8080);
As tu essayé de "réinstaller" socket.io pour voir (npm uninstall / npm install) ?
(Question bête et absurde mais bon ...) Comment appelle tu ta page dans ton navigateur?
index.html est bien index.html il n'a pas un autre non ?
Je sais c'est une série de question connes mais à mon avis soit c'est une connerie bête qui bloque l’exécution de ta page soit c'est socket.io qui merde...
Parce que quand j'avais fait des corrections des exos P2P lors de ma première inscription, je m’étais aperçu que l'install des dépendances et la suppression des dossiers à l'arrache, à la longue mettait un bazar sur ce que j'avais fait.
(et... oui je me suis réinscrit parce que j’étais pas satisfait de ce que j'ai envoyé comme code sur l'éxo final ... bref passons)
______
j'ai refais à l'instant un test. ta page HTML (index.html) et le code que je viens de l’envoyé fonctionnent...
@CQEadsurf: j'ai fait un copier coller de ton code, j'ai desinstallé puis réinstallé socket.io et toujours la même chose, pas de message dans la console.
Par contre à chaque fois que je charge la page, j'ai 2 fois "Un utilisateur a affiché la page" dans la console et je comprend pas pourquoi.
@Maastok : "Un utilisateur a affiché la page" est du a ce code :
var server = http.createServer(function(req, res){
fs.readFile("index.html", "utf-8", function(error, content){
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
});
console.log("Un utilisateur a affiché la page !");
});
le tout c'est de savoir s'il affiche ta page web coté navigateur : est-ce le cas?
sinon ça explique pourquoi socket.io est "muet" c'est que ta page n'est pas appelée.
j'ai fait un autre test : j'ai lancé node et après j'ai lancer la page HTML qui se trouvait dans le dossier.
résultat du test : la page devrait demander malgré tout une requête au serveur node. et j'ai eu "Un client est connecté !"
est ce que c'est le cas chez toi? si c'est le cas c'est qu'il se passe quelque chose lorsque tu appelle ton HTML.
autre question est ce que ton index.html est dans le même dossier que ton appli ? ça aussi ça peut jouer...
_____
Sinon tu pourrait me dire en détail quel est ton processus de test? (juste par curiosité) comment se nomme ton fichier HTML et ou il se situe par rapport a ton fichier.js ? (p-e en retranscrivant ce que je te demande tu t’apercevra d'une énormité qui nous échappe)
______
Par contre à chaque fois que je charge la page, j'ai 2 fois "Un utilisateur a affiché la page" dans la console et je comprend pas pourquoi.
Ça aussi j'ai remarqué et ca c'est due p-e au fait que tu lance node.js alors que ton navigateur est sur la page "localhost". il n'est arrivé de lancer plusieurs fois node quand j'avais mon navigateur sur localhost et j'avais ce genre de bug (enfin si on peut appeler ça un bug...) et ca le fait surtout quand tu as module socket.io de lancé (enfin je crois, et ca m’amènerais à penser que : socket.io marche donc il y a une énormité que tu ne dévoile pas)
donc fait ce test : lance node.js et ouvre ton fichier html la ou il se trouve.(je radote ? c'est p-e l'age)
Bon je viens d'envoyer à nouveau mon code (que j'ai pu finaliser a 80%).
J'ai corrigé mes exo en même pas 5min, juste le temps de voir si ça marche, que l'install des dépendances se fasse que le code soit nickel...
Dommage qu'il n'y a pas de points d'originalité... ça pousserait p-e les gens a faire des efforts ... sur les 3 que j'ai corrigé (même les 6 vu que c'est ma 2eme participation) si ce point existait 1 seul l'aurait (juste un petit plus de rien du tout mais qui m'a fait dire que ce n'est pas le même exo que je corrige fonctionnellement parlant).
En espérant d'être corrigé aussi vite.
______
Apparemment ma note traine... On est plus pressé de recevoir les notes que corriger les TP...
- Edité par Manuel CQE 1 septembre 2014 à 12:17:06
Bienvenu au club ça doit être le fait qu'on est 110 pinpins contre 3 513 sur HTML par exemple...
Comme c'est une nouvelle technologie encore peu connu basé sur un langage "bancale" et peu aimé, imposé par des barbus... ça ne m'étonne pas qu'il n'y ait pas foule pour suivre ce cours et encore moins sur le fait qu'on ne soit pas expressément corrigé (vu que la correction P2P s’appuie sur la participation des élevés)
(dsl je me suis emporté dans mon délire mais pour la correction P2P s'appuyant sur la participation des "élevés" j'ai pas faux )
sans parlé que pour couronner le tout j'ai mis de l'angular dans mon exo... c'est vrai j'ai fais un truc qui donne pas envie de corriger
- Edité par Manuel CQE 6 septembre 2014 à 23:08:21
Bonsoir, la bonne idée aurait été de prolongé la période pour rendre le dernier exercice car moi je ne les pas fini à temps et donc je ne peux corrigé personne et peut être que je suis pas le seul dans le cas
Salut, j'ai finalement trouvé la solution à mon problème, c'était juste une balise de commentaire dans mon js qui était pas fermée, ça provoquait pas d'erreur mais ca m'a quand même bien agacé x)
@Maastok : "ah.....! syntaxe ! notre pire ennemi ! " content que ce soit arrangé.
@stephane7393 : oui ... enfin .... faut pas trop exagérer...
1) Je cite:
"Attention : Node.js n'est pas fait pour les débutants. Notez bien le niveau "Difficile" de ce tutoriel. Pour suivre ce tutoriel, il faut déjà avoir un bon niveau en JavaScript. Lisez ou relisez le tutoriel JavaScript de Thunderseb et Nesquik69. Si vous vous dites "Je fais déjà du jQuery régulièrement donc je connais JavaScript", vous n'avez très probablement PAS le niveau attendu. Si par contre vous êtes à l'aise avec le concept d'objets JS, d'héritage par prototype, de closures... C'est bon signe ! Je m'efforcerai d'être le plus accessible à tous et de faire des rappels, mais ne sous-estimez pas l'importance d'une relecture du tutoriel JavaScript !"
le niveau "Difficile", oui mais pas au point de rendre un devoir dans 2 mois...
Pour être franc mon "expérience" sur JS........ ça faisait un peu plus d'un mois que je "pratique" avant de commencer ce cours.
Perso je me suis pris à 2 fois pour envoyer un exo ambitieux, dont la première fois en envoyant quelque chose qui fonctionnait à moitié...(il y avait juste la mise en mémoire et la restitution de la todolist pour un nouvel utilisateur, l'ajout et la suppression des taches qui fonctionnaient). N’empêche, sur les 2 fois j'ai quand-même corrigé mes exos.
2) Quand je vois la qualité du travail que j'ai corrigé je me suis dit "bon sang je me suis bien em...nuyé pour pas grand choses". Après tout, tout ceux que j'ai corrigé ont eu raison, leurs exo reprennent la première todolist en répondant au critères demandé, ils ont eu 10/10. Ils ont du le pondre en un après midi voir en 2 jours...
6 exercices 6x "la même chose"... visuellement parlant (s'il y avait 1 point pour l'originalité, je ne l'aurais pas distribué...)
Quant au temps de l’exécution de l'exercice : on a une semaine pour clore un chapitre et faire les exos. Sans parler que rien n’empêchait de prendre de l'avance sur la lecture du cours si on avait fini un chapitre plus tôt que prévu...Même si on n'était pas membre premium!
Puis avec le forum, l'énoncé à déjà fuité plus ou moins... Encore faut il prendre le temps de lire le sujet depuis le début (surtout qu'il y a 3 pages...). Dire qu'on a pas le temps de lire alors que sur ce cours (le cours + le forum) il n'y a que la lecture qui n'est pas limité par le temps (même un non inscrit au cours peut le consulter, bien qu'il n’accède pas aux QCM)... c'est de la mauvaise foi !
______
PS: si un modérateur passe par la : si ça peut faire avancer le shmilblick et faire en sort que 3 aimables personnes puissent corriger mes exos au plus vite, je suis prêt à en corriger un par soir... mais bon je suis toujours persuadé que c'est le manque d’élèves arrivants à la 3eme semaine qui fait que la correction P2P fonctionne peu...
- Edité par Manuel CQE 8 septembre 2014 à 17:55:30
@Maastok : il est fort probable que ce soit une histoire de routage et donc un renseignement a mettre en plus coté serveur pour chaque fichier que ton navigateur veut consulter (JS et CSS compris). tu auras le même problème avec ton css si tu le sépare... (c'est une vraie page HTML appelé grace au module express? lis ceci, si tu utilise en plus EJS... heu...en théorie ca devrait marcher aussi et si en plus tu utilise FS au lieu de express... ("heu..." en 6 fois pire ))
- Edité par Manuel CQE 8 septembre 2014 à 16:37:52
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
L’éternel débutant...
L’éternel débutant...
L’éternel débutant...
L’éternel débutant...
L’éternel débutant...
L’éternel débutant...
L’éternel débutant...
L’éternel débutant...
L’éternel débutant...
L’éternel débutant...