Auteur
Grafikart

108 Commentaires

056052fc331e35ea897092dc34b3c71e?s=200&r=pg&d=mm
SamJS, 18-12-2014 11:38:25 - Répondre

Bonjour les amis,

svp j'ai un problème avec les sockets.io , j'ai crée un boutton qui envoi des informations (JSON) au serveur apres au serveurs clients on utilisant socket.io-client , quand je clique tout marche bien apres si je clique une autre fois la réponse s'affiche 2 fois et si je clique une autre fois la réponse s'affiche 3 fois ... clique -> 4fois ... clique --> n fois
aves vous une solution poure fixer ce problème ?

Mercii ^^

755fca6447b253b6f17b1da96e936f6a?s=200&r=pg&d=mm
Kenzo Labidor, 14-09-2014 20:41:42 - Répondre

il marche pas ...

0948e04d5a011dad343e06fb110a8fa1?s=200&r=pg&d=mm
order_viagra, 08-08-2014 23:32:16 - Répondre

Welcome!
<a href="http://orderviagrabuyviagra.com">order viagra</a> , <a href="http://freeedsamples24.com">viagra soft</a> ,

810ecdc127eebb49ab22e93714c39f1c?s=200&r=pg&d=mm
nodejs chat, 31-07-2014 17:10:15 - Répondre

http://upsimple.com/chat_nodejs/

A447e37793cb8146086aa809dcbd4f46?s=200&r=pg&d=mm
Dosso, 30-07-2014 15:07:42 - Répondre

j'ai un problème, je veux faire deux serveurs distant j'ai apprit que c'est possible de faire en js mais j'avoue que je c'est pas trop comment m'y prendre ci quelqu'un peu m'aider?

merci d'avance,

Da1a35ac4f961237d5c1aefae7848184?s=200&r=pg&d=mm
cialis, 17-07-2014 16:06:12 - Répondre

Hi there!
<a href="http://genericpillssonline-247.com">cialis</a> , <a href="http://orderviagrabuyviagra.com">order viagra</a> ,

B9fcff8cc6dda1d9c5aeb6bc78dfee98?s=200&r=pg&d=mm
insaneitskills, 19-06-2014 03:26:06 - Répondre

Thanks for this ressources!
Check this course it's straight to point and it gives you all the keys to a good start for a complete masteration of node.js by taking all the power of it.
https://www.udemy.com/nodejs-tutorial-from-scratch-by-examples/

3581b0e1931b2445bb117aded8bf8028?s=200&r=pg&d=mm
Error4042b, 14-04-2014 02:43:47 - Répondre

"Désolé pour commentaire coupé --" "
De plus la console m'affiche cette erreur au niveau du serveur js :

C:\Users\cyril\Desktop\Tchat\server.js:51
me.id = md5(user.mail); // On g?®n?¿re une clef unique par utili
sateur (bas?® s
^
TypeError: object is not a function
at Socket.<anonymous> (C:\Users\cyril\Desktop\Tchat\server.js:51:11)
at Socket.EventEmitter.emit [as $emit] (events.js:95:17)
at SocketNamespace.handlePacket (C:\Users\cyril\Desktop\Tchat\node_modules\s
ocket.io\lib\namespace.js:335:22)
at Manager.onClientMessage (C:\Users\cyril\Desktop\Tchat\node_modules\socket
.io\lib\manager.js:488:38)
at WebSocket.Transport.onMessage (C:\Users\cyril\Desktop\Tchat\node_modules\
socket.io\lib\transport.js:387:20)
at Parser.<anonymous> (C:\Users\cyril\Desktop\Tchat\node_modules\socket.io\l
ib\transports\websocket\hybi-16.js:39:10)
at Parser.EventEmitter.emit (events.js:95:17)
at finish (C:\Users\cyril\Desktop\Tchat\node_modules\socket.io\lib\transport
s\websocket\hybi-16.js:288:16)
at Parser.expectHandler (C:\Users\cyril\Desktop\Tchat\node_modules\socket.io
\lib\transports\websocket\hybi-16.js:299:15)
at Parser.add (C:\Users\cyril\Desktop\Tchat\node_modules\socket.io\lib\trans
ports\websocket\hybi-16.js:466:24)

C:\Users\cyril\Desktop\Tchat>

Si quelqu'un peut m'aider merci !

Aa8a4525ea8206dd981d717bf2a59113?s=200&r=pg&d=mm
BOUDALIA TAREQ, 20-06-2014 23:03:51 - Répondre

J'ai la même erreur avec le package md5

Aa8a4525ea8206dd981d717bf2a59113?s=200&r=pg&d=mm
BOUDALIA TAREQ, 20-06-2014 23:50:26 - Répondre

tu peux utiliser le package crypto avec

var crypto = require('crypto');
var md5 = crypto.createHash('md5');

me.id = md5.update(user.mail).digest("hex");

3581b0e1931b2445bb117aded8bf8028?s=200&r=pg&d=mm
Error4042b, 14-04-2014 02:37:53 - Répondre

Bonjour à tous !

Je viens de finir le tutoriel qui est tout simplement génial.
sauf que j'ai un petit problème, lorsque je souhaite me connecter en entrant un pseudo et mail, je reste bloqué surr la page de connexion. De plus la console m'affiche cette erreur au nive

1346
ithor, 07-04-2014 21:09:45 - Répondre

Super tuto, c'est fou les perspectives que NodeJS nous ouvre !!

à quand le prochain tutoriel avec l'interaction à MySQL ? O:-)

Cela nous permettrait de rajouter de la sécurité en validant côté serveur l'authentification de la personne au chat si il avait supposons un login / pswd !

Sinon, petite question sécurité, les websocket, est-ce une connexion sécurisé ? (Comme l'https ?!)

Merci en tout cas pour tous ces beaux tutos !!

75647ec38ae749f0ceb3204cfa53cc81?s=200&r=pg&d=mm
machinist, 28-03-2014 17:28:13 - Répondre

je le lance en local, j'entre le nom + mail .....ça mouline un peu et puis plus rien !!!

75647ec38ae749f0ceb3204cfa53cc81?s=200&r=pg&d=mm
machinist, 28-03-2014 18:04:38 - Répondre

c bon le problème était jquery, j'ai dû la télécharger en local + MD5 me faisait une erreur --> je l'ai mis en commentaire :) ça roule

A3bb32b3b28f38190d8d05cbee94f10f?s=200&r=pg&d=mm
resetThread, 17-01-2014 18:23:18 - Répondre

Bonjour,

J’ai découvert node-js depuis peu de temps et un problème de répertoire apparait :
Quand je lance le serveur dans le répertoire par défaut sur windows 7, tout marche ( c / utilisateurs/ prenom).
Mais si je souhaite changer de répertoire de travail dans Node.js command prompt, c’est tout simplement impossible. Même en faisant un glissé-déposé.
Je précise que j'ai rarement utilisé le terminal pour travailler.

Merci pour votre aide.

A5fbb6c5bb68ae0c2391e3f671aecb4c?s=200&r=pg&d=mm
Packo, 12-12-2013 19:03:49 - Répondre

Juste... GG !!

28427
gilbert1995, 28-08-2013 03:21:17 - Répondre

Salut Raton,
Je voulais savoir se que je dois faire pour hoster mon app nodejs sur appfog comme toi.

Merci

E500b5be69a806773d34baaeb5941f0d?s=200&r=pg&d=mm
golgotha, 13-07-2013 13:10:34 - Répondre

J'ai voulu mettre en place ce système sur un site web existant, le problème qui se pose c'est que l'utilisateur peux assez simplement changer sont nom d’utilisateur pour parler à la place de quelqu'un d'autre.

Une solution consiste à utiliser Redis par exemple pour faire du partage de session entre le serveur du site web et NodeJS, mais c'est un peut trop lourd..

J'ai utilisé une astuce, la solution consiste à avoir une clé privé et une clé public.

Un exemple simple avec le passage du nom d'utilisateur du serveur apache (par exemple) au serveur NodeJS, en contrôlant que le nom d'utilisateur n'ai pas été altéré sur le navigateur.

Sur le serveur apache, on va hasher le nom d'utilisateur avec ce qu'on appel un sel, c'est à dire un mot de passe, on l’appellera private_key. le hash ainsi généré sera notre clé public.

sur le serveur du site web :

username = 'alice'
private_key = 'ThisIsSparta'
public_key = md5(private_key + username)

on envoie sur le client : {user : username, key : public_key }

Ensuite, au moment de la connexion, sur le serveur NodeJS, on va refaire le hash et contrôler ainsi les données.

private_key = 'ThisIsSparta'
control_key = md5(private_key + user.username)

Si control_key == user.public_key alors les données sont correct.
Sinon, les données ont été changé durant leur transfert.

C'est un moyen assez éfficase et simple pour s'assurer que les données n'ont pas été altéré.
Dans mon projet j'ai utilisé md5 avec NodeJS

j'espère que ça pourra être utile à quelqu'un d'autre.

9b6c9109649eb37c9c5cbb19fa5efe61?s=200&r=pg&d=mm
Taramis, 20-08-2013 09:58:25 - Répondre

Salut golgotha.

Ta solution est bien et ressemble à celle que j'avais prévu lorsque j'ai voulu faire un tchat avec node pour mon browser game.

Le problème, c'est que cela implique que le joueur se connecte via un formulaire. J'aurais voulu que mes sessions sur mon serveur web passe sur mon serveur node mais cela n'est pas possible, le port étant différent. Et si oui, selon tes propos, c'est apparemment assez lourd.

J'ai du abandonné node et c'est regrettable car les résultats du tchat étaient incomparables à un tchat ajax ou autre.

En revanche, petite info en passant, je déconseille le md5 non assorti d'un sha1. Le md5 est facilement décryptable aujourd'hui par des programmes qu'un enfant de 12 ans pourrait trouver et se servir.

7787435350d358ebdea2c75b601142cd?s=200&r=pg&d=mm
earhater, 12-10-2013 19:42:40 - Répondre

Tu peux accéder à la session avec node, ou avoir accès à une base de données. je pense que tu n'as pas cherché assez loin

Fd2997db6d6caf4bfb2c67883056d4de?s=200&r=pg&d=mm
abdou, 12-07-2013 15:59:46 - Répondre

Bonjour je viens de dèbuter avec ce tutoriel mais bon lorsque j'actualise la page index.html j'obtiens pas au niveau du serveur debug client authorized j'ai pas de rèponse j'ai juste served static content /socket.io.js

B3764d9a2124fedf94318d701bb73777?s=200&r=pg&d=mm
PopTart, 30-06-2013 01:14:14 - Répondre

Petite astuce pour grafikart, livereload existe pour reload le serveur nodejs à chaque sauvegarde (comme celui pour sinatra ou simplement chrome :) )

1cd9128e99dba8370fc2698583038f94?s=200&r=pg&d=mm
JB, 23-06-2013 16:27:26 - Répondre

Contrairement à ce qui est dit dans la vidéo on peut utiliser des sockets pour faire du temps réel en PHP. Pour la techno WebSockets il y a aussi plusieurs bibliothèques (ex : Rachtet : http://socketo.me/). Avec Flash (socket côté client) et PHP on pouvait déjà faire la même chose que dans la vidéo il y a de nombreuses années (memcached servant à stocker les messages et user en mémoire).

D85dcc268a06cc331f98c86dcec63901?s=200&r=pg&d=mm
bgdedkd, 10-06-2013 19:52:57 - Répondre

Hello! kceefcf interesting kceefcf site!

5fca17e211e221a597be471a161ffafb?s=200&r=pg&d=mm
KuroiRaven, 06-06-2013 04:03:33 - Répondre

Vraiment bon tutoriel, dommage que les applications Node.js ne soient pas "vraiment" utilisable sur le net ...
(Ou alors j'ai juste pas compris comment on heberge ça sur un hebergeur classique ? x) )

J'attends avec impatience le tutoriel qui expliquera comment connecter mysql à ce système !

3a34fd12cc7dcabe1058f42a005d7df9?s=200&r=pg&d=mm
andromede971, 05-07-2013 19:31:49 - Répondre

Bonjour,

Pour l'utilisation de mysql avec NodeJs, les explications sont ici : https://github.com/felixge/node-mysql

J'ai testé et sa fonctionne très bien. En revanche pour l'installation, j'ai utilisé la commande suivante : npm install mysql

Voila.

P.S: Un grand merci à Grafikart pour ce tuto !!!

6fd42834fa304f6052868d6491856a69?s=200&r=pg&d=mm
Ken Sato, 23-05-2013 03:18:38 - Répondre

Bonjour,

très bon tuto sur l'utilisation de nodeJS!!
Mais j'ai le même problème que TETR, au moment de la soumission de mon formulaire, la console ne m'affiche pas les valeurs de username et password!! j'ai vérifier a plusieurs reprise mon code ainsi que le tuto mais rien à faire!! la console m'affiche seulement "Nouvelle Utilisateur".

Quelqu’un aurait une solution à mon probleme??

6fd42834fa304f6052868d6491856a69?s=200&r=pg&d=mm
Ken Sato, 23-05-2013 18:31:22 - Répondre

J'ai trouver, en fait j'ai déplacer tout mes script dans le <body> et la sa fonctionne!!

E0c43d117f1b309caf12273c92f217ea?s=200&r=pg&d=mm
Giel, 21-05-2013 01:00:37 - Répondre

Bonjour,

à quand une suite ? Cela a été très enrichissant comme tutoriel, cela me donne vraiment envie d'en apprendre davantage !

Merci :)

Cdb72c43e10e82f19cf6bf4814f1e089?s=200&r=pg&d=mm
Pierre, 15-05-2013 18:43:15 - Répondre

J' aimerai essayer de le faire fonctionner sur http://www.tchat.cc est-ce que c'est possible de m'aider svp j'y comprend rien du tout.
Pourrais tu m'expliquer clairement la démarche à suivre. Est-ce que tout d'abord c'est possible de l'installer sur un blog créé sur Blogger

50a82a91611b9859746baf0666bd2845?s=200&r=pg&d=mm
TETR, 26-04-2013 13:14:40 - Répondre

Très bon tuto mais je bloque au début quand on affiche dans la console la valeur de user lorsque le formulaire est soumis.
J'ai tout essayé , repris complétement le code, vérifié 100 fois qu'il était similaire à celui du tuto (je suis pas premium donc j'ai pas le code source) ... toujours rien qui s'affiche dans la console , à part "Nouvel utilisateur. C'est comme si l’événement login n'était pas émis (ou mal reçu).

Quelqu'un sait d'où peut venir le problème?

Cbab11c81a453759e918254a3debab71?s=200&r=pg&d=mm
Ludo, 22-04-2013 17:39:44 - Répondre

Un très bon tuto.
A quand la suite ?

15f173997b71aeb6e871c2a86f7a0c32?s=200&r=pg&d=mm
Axess, 06-04-2013 14:46:19 - Répondre

Pas mal du tout ! C'est dommage qu'il ne fonctionne pas sous IE9.. :-(

D8bc1598c68c69b450374a7be6611fd8?s=200&r=pg&d=mm
pjehan, 17-03-2013 12:39:39 - Répondre

Excellent tutoriel.
Une solution pour le déploiement sur serveur et en dev pour éviter de devoir relancer le serveur à chaque modification : Forever (http://blog.nodejitsu.com/keep-a-nodejs-server-up-with-forever).
Ce module s'installe à l'aide de NPM
npm install forever-g
Et permet ensuite de démarrer un server nodejs sans bloquer la console et qui se relancera en cas de crash (lors d'une modification des fichiers par exemple).
Pour le lancer, rien de plus simple..
forever start monServerNodeJS.js

Voilà, je recommande fortement :)

29e78cdfcfe8f52569173f7f7ef9ad12?s=200&r=pg&d=mm
Nightmare, 14-03-2013 08:46:59 - Répondre

Super top le tuto !!! Bravo !
Cependant je voudrais savoir si je souhaite enregistrer les conversations du jour de tous les utilisateurs dans un fichier texte (avec l'auteur du message - l'heure et date du message - le contenu du message), comment je dois procéder svp ?
Merci d'avance !

Ed197ce91534fb7ae79ba01d81449ff9?s=200&r=pg&d=mm
deepImpact, 08-03-2013 03:16:33 - Répondre

Super ! Merci Bien ! ^^

7dca64a3d4aaefeb59ecbb8077294f65?s=200&r=pg&d=mm
Julien, 26-02-2013 15:37:04 - Répondre

Bonjour,
Je suis tombé par hasard sur ce tuto car je cherchais justement le moyen de faire un tchat utilisant Socket.IO (ayant déjà testé les sockets PHP et HTML5).
Tout y est expliqué afin de partir sur une bonne base, un grand merci donc !

Par la suite j'aimerais élargir ce concept en ne diffusant les messages qu'aux membres appartenant au même réseau (ayant la même IP publique).
Auriez vous une idée sur la façon d'y parvenir ?

D'avance merci, et bonne continuation !

0c310f057c98587f83a67952e5f77b86?s=200&r=pg&d=mm
ka, 21-02-2013 12:19:03 - Répondre

alors il faut 2 serveurs http ? un serveur http wamp + un serveur http node ... + les sockets
on ne peut pas se passer de wamp ? j'ai pas tout saisi ...

4845a34cf8a479e542a7e8cd05baa1b5?s=200&r=pg&d=mm
dimb, 16-02-2013 23:21:19 - Répondre

Bonjour grafikart. Il existe de nombreux langages coté serveur pour utiliser les websockets, Javascript est-il vraiment performant? Ca ne semble pas être un langage orienté objet et des applications plus conséquentes peuvent finir par montrer les limites de javascript? Php ou java ne seraient-ils pas plus adapté?

Et concernant le code source, de quelle manière le protégeriez-vous contre la copie?

En tout cas tutoriel très intéressant, à approfondir sois-même, mais bravo.

E58395e9972b2553e129dee7e15ed8fb?s=200&r=pg&d=mm
Pierre Petiteau, 10-02-2013 00:10:12 - Répondre

Pourquoi Quand même je prend les codes sources, que je les place en local avec wamp et que je lance le server comme dans le tuto, ca ne fonctionne déja pas, il y a une erreur dans le code source ?

9dcb4134babbb9af0b28de40e64a7b91?s=200&r=pg&d=mm
KHub, 09-02-2013 12:47:52 - Répondre

@skulladminaversion
Ton problème vient surement du fait que ton serveur n'a pas NodeJS d'installé dessus.

Dbb842174be5152726d00137dac02008?s=200&r=pg&d=mm
skulladminaversion, 02-02-2013 00:03:29 - Répondre

Voici mes fichiers, si quelqu'un souhaite m'aider à deceler le problème (https://mega.co.nz/#!8ZV1HZqL!Cdj3ZFDISJ4H00LSyoa84lAmAhpDNkp8Iwchq8LZNeA)

Dbb842174be5152726d00137dac02008?s=200&r=pg&d=mm
skulladminaversion, 01-02-2013 20:31:09 - Répondre

Tres bon tuto mais j'ai un problème, je souhaite utiliser ce chat pour mon site web et je reste a chaque fois à la page ou l'on rentre id et mail,

J'ai mis les fichier suivant dans les fichiers "home/chat"
- index.html
- css
- img
- jquery
- js (avec client.js et mustache.js à l'intérieur)
- server.js
- node_modules (avec MD5 Et socket.io (//socket.io est le nom du dossier, le fichier socket.io est a l'intérieur//)
J'ai mis les fichiers tels quels et là, ca ne fonctionne pas

Je n'arrive pas a comprendre, quel est la procédure à suivre ? il me manque forcément quelque chose mais quel est-il ?

1209
Typhon, 28-01-2013 10:52:38 - Répondre

J'ai utilisé ce tuto, pour créer mon projet de fin d'étude, une application en ligne de jeu de Tarot en multijoueurs, l'application tourne en ligne de manière autonome depuis hier soir =)

Node.js à ouvert un très large horizon sur les possibilités du web et du javascript.

Il m'aura fallu 2 mois pour coder un fichier de 1200 lignes côté serveur permettant de gérer plusieurs parties de tarot simultanées [avec une IA (qui joue aléatoirement pour le moment) pour remplacer les joueurs qui quittent en cours de partie].

J'attends de voir par la suite si mon projet aboutira =) mais je peux vous dire qu'un tchat avec Node.js c'est ridicule en comparaison ^^

B595da599f463e6cdd32e8db6a4dd66b?s=200&r=pg&d=mm
bobadr3, 21-01-2013 18:27:25 - Répondre

Je n'arrive pas à identifier l'éditeur qu'il est utilisés (fond noir) ! As tu son nom car j'en cherche un de bien ?!
Merci

1
Grafikart, 22-01-2013 01:36:27 - Répondre

C'est Sublime text 2 j'ai fait un tutoriel dessus.

99a8d1197e8635b0ea7c122000fde7e6?s=200&r=pg&d=mm
Asmista, 18-01-2013 16:48:06 - Répondre

Merci pour le tuto vraiment sympa, dommage que tu ne parle pas un peu plus du déploiement !

Db45d3c9088f88a5bd9bce84b0e19260?s=200&r=pg&d=mm
Bchini Mehrez, 11-01-2013 13:07:23 - Répondre

Merci pour ce Tutorial mais j'ai un problème dans l'installation de socket.io, ça me retourne une erreur et je ne comprends pas ou il réside le problème. Et merci une autre fois.

367a409307d899458ac0e8c3eb148483?s=200&r=pg&d=mm
Frédéric H-F, 04-01-2013 12:41:45 - Répondre

J'ai bien hâte de voir le totoriel NodeJS/MySQL!!! Pour quand?!? :-)

Merci pour ce tutoriel, vraiment pratique!

1209
Typhon, 28-01-2013 10:55:39 - Répondre

De même, j'ai hâte de pouvoir communiquer avec une base données ça pourrait être très pratique. J'ai vue que Node.js était souvent couplé à MongoDB pour une gestion de base de données. Peut être que le tutoriel sera Node.js/MongoDB ;)

Ed77209f9fa44f54a052f752d0863856?s=200&r=pg&d=mm
Maxime DutourRousseau, 02-01-2013 23:28:13 - Répondre

Où son les autres parties du tutoriel ?

Ce009ffffb0f2f76a2d0914168dc699d?s=200&r=pg&d=mm
Maslow, 25-12-2012 15:30:41 - Répondre

Excellent tuto.
Vivement le suivant sur NodeJS/MySQL.

Ce qui serait aussi intéressant serait de voir le process de mise en prod d'un tel projet.
- Pour voir l'install et l'utilisation de node en prod (que devient ton localhost:1337 ?)
- Pour nous montrer l'organisation des dossiers et ton htaccess/vhost (J'imagine que le client n'est pas censé avoir accès au côté serveur, si ? O_o)

Je me demande d'ailleurs ce que ça vaut niveau sécurité. Le client peut plus ou moins envoyer ce qu'il veut et foutre le bordel nan ? Faut-il prévoir des validateurs de partout ?

Enfin, petit bémol, Node et les sockets méritaient une vraie explication. Ne serait-ce qu'une intro.

Encore merci en tout cas.

7787435350d358ebdea2c75b601142cd?s=200&r=pg&d=mm
earhater, 02-01-2013 20:50:57 - Répondre

Pour le localhost:1337 il suffit simplement de faire écouter le port 80, tu pourras y accéder normalement via localhost.
"Le client peut plus ou moins envoyer ce qu'il veut et foutre le bordel nan" C'est valable dans tous les langages.

38f98495d61ef95375d1e2670f870cdb?s=200&r=pg&d=mm
ThePooh, 24-12-2012 01:57:52 - Répondre

Pour une première approche c'est sympa. Je pense néanmoins que tu aurais plus du insister sur la théorie de Node.js. Toute la difficulté réside dans la compréhension de ce qu'est vraiment node.js il est important de bien "éduquer" les gens :D

29694b21483f8afe1b8689a192524098?s=200&r=pg&d=mm
AREZIS, 23-12-2012 04:29:39 - Répondre

Salut,
C'est un super tuto, mais j'ai un problème.
J'ai installé node.js sur une debian 6 avec tous les modules (MD5, Socket.io) mais je n'arrive pas a me connecter sur le port 1337 et je pense que cela fait que mon tchat n'arrive pas a connecter une session est que je reste toujours bloqué sur la page d'authentification.
Quelqu'un aurait une idée?
Sa me bloque et je comprend pas pourquoi.

1209
Typhon, 28-01-2013 10:58:08 - Répondre

Le port 1337 est utilisé pour l'usage en local, sur un serveur écoute le port 80. J'ai eu le même problème, et de faire écouter le port 80 a résolu mon problème.

21378
matspider, 23-12-2012 03:47:20 - Répondre

Je m'amuse actuellement a essayé de trouver une solution pour intégrer un système de salons sur le chat. si j'y arrive, je donnerait les sources gratuitement. Zone d'affichage des différents salons => fait, envoi du salon actuel lors du post d'un nouveau message => fait, bug au niveau de l'affichage des messages en fonction du salon => en train de me tuer ;(

21378
matspider, 23-12-2012 03:58:31 - Répondre

Voila, j'ai ajouter une variable "var channel = 1;" dans le client.js . Cette dernière me permet de savoir dans quel salon la personne se trouve. Ensuite, lors de l'envoi d'un nouveau message, j'ai modifier l'envoi au serveur comme ceci : "socket.emit('newmsg', {message: $('#message').val(), currentChannel: channel });" . Et finalement, j'ai ajouter : "socket.emit('changeChannel', {channelid: $(this).attr('href'), currentChannel: channel});" lorsque l'on clique sur le nom du channel que j'ai casé dans le design.
Jusque la tout fonctionne.

Pour le server.js :

j'ai ajouté ceci pour commencer : "socket.on('changeChannel', function(id){
channel = id;

});" Cela sera fait plus tard pour changer de channel.

J'ai donc ensuite modifié le "socket.on('newmsg', function(message))..." en : "socket.on('newmsg', function(message, channel){ ..."

Et pour finir, j'ai ajouté cette ligne qui permet d'envoyer au client le channel dans lequel ce message doit d'afficher : "message.channel = channel;"

Retour au client.js :

J'ai donc pour finit modifier le socket lorsque l'on reçois un nouveau message en englobant le tout dans une condition :
"
if(message.channel == channel){
if(lastmsg != message.user.id){
$('#messages').append('<div class="sep"></div>');
lastmsg = message.user.id;
}
$('#messages').append('<div class="message">' + Mustache.render(msgtpl, message) + '</div>');
$('#messages').animate({scrollTop : $('#messages').prop('scrollHeight') }, 500);
}
".

Je me dit, testons déjà ci cela fonctionne, vu qu'il n'y a qu'un seul channel, ce dernier devrait s'afficher, vérifier si je n'ai pas créer de bug. Mais lorsque je tape un message, ce dernier ne s'affiche pas, je voit la console, ce dernier est bien envoyé au server, mais rien ne s'affiche sur la page. J'ai besoin d'aide (1h que je suis dessus, je vais cracker ;( ) Merci d'avance :)

7787435350d358ebdea2c75b601142cd?s=200&r=pg&d=mm
earhater, 03-01-2013 12:21:05 - Répondre

Socket.io intègre un système de channel. Va voir sur http://socket.io coté documentation, parie channels.

Ecf6f25c7569478238578d3484d94cc1?s=200&r=pg&d=mm
najih, 07-12-2012 21:24:56 - Répondre

tutorial fantastique

8be19d5f260005e8745f6d94028ed71d?s=200&r=pg&d=mm
__fabrice, 07-12-2012 00:20:54 - Répondre

Salut,
Super tuto, merci :)

A mon avis, la suite logique, et le plus intéressant à faire dans un domaine plus professionnel, est de gérer des web services avec nodejs.

En y incluant express (pour le coté 'mvc'), un module d'identification (tres important) et mysql (ou mongoose), on a une appli qui pourrait etre utilisé en production.

Je dis çà, je dis rien ;)

Fabrice

6d5d0731b4b0bea3d7ff7e7ce26dd5d5?s=200&r=pg&d=mm
Franck Wilfried, 28-11-2012 14:35:31 - Répondre

Tres bon tutoriel, mais j'aimerais savoir si ça supporte la montée en charge.

8adcdb9b511b29e3f669bd219a406aa8?s=200&r=pg&d=mm
zike, 27-11-2012 11:41:38 - Répondre

Super tutoriel, le plus complet que j'ai pu voir sur socket.io !

Mais j'ai une question dont je n'ai toujours pas la réponse :
- est-ce que le serveur peut émettre en direction d'un unique utilisateur différent de celui qui créé l’évènement ?

Merci.

8adcdb9b511b29e3f669bd219a406aa8?s=200&r=pg&d=mm
zike, 28-11-2012 20:30:36 - Répondre

Après moult recherche, j'ai trouvé la réponse.

Donc si intéresse quelqu'un voici la solution : io.sockets.socket(userID).emit();
userID correspond à l'id de l'utilisateur ciblé que l'on a stocké au préalable grâce à socket.id

Voilà :)

013966c1bb513932d33c0272871b397b?s=200&r=pg&d=mm
YannDMX, 24-11-2012 16:09:58 - Répondre

Excellent tuto !
Pour éviter de relancer à chaque fois le server, je vous conseille le package nodemon
npm install nodemon -g
le -g permets de l'installer directement dans le core de node.js pour une utilisation dans chaque dev.

(PS: pour les Mac user : à installer avec un sudo pour avoir les droits d'écritures dans /usr/lib)

Ce 'moniteur' relance automatiquement le server Node dès qu'il détecte une modif dans le code js

Bef4e03b067062f13c62498f6c438d76?s=200&r=pg&d=mm
Franck55, 26-11-2012 10:25:38 - Répondre

Effectivement c'est sympa nodemon, l'avantage c'est que lorsque le serveur node crash il est relancé automatiquement aussi

le lien de la documentation : http://remysharp.com/2010/10/12/nodejs-rapid-development-nodemon/
Merci YannDMX

Fd55a5a12520d1a9d98900f1df638df7?s=200&r=pg&d=mm
Pampa, 23-11-2012 22:45:49 - Répondre

Vraiment très intéressant.
Merci pour ce tuto !

Au plaisir de te croiser sur vizu ^^

5bdeeeda5b35e6830c65ffc5d296d68d?s=200&r=pg&d=mm
TheJ, 22-11-2012 14:31:18 - Répondre

Bon tuto!

Mais pour avoir déjà traité la chose, si vous l'utilisez sur un site à forte charge, node est à utiliser avec beaucoup de précaution. Et surtout si le serveur node tombe!

7dc92425314ea3da4e9d251febd5d5a4?s=200&r=pg&d=mm
kris972, 22-11-2012 06:21:40 - Répondre

Salut super tutoriel !!! Comme beaucoup d'autres sur ce site !! J'attend la série créer un site NODEJS complet en 7 jours !!!
C'est vrai que c'est beaucoup plus agréable d'avoir le mm language coté serveur et client !! La question c'est est ce que NODEJS est vraiment plus rapide que PHP, et pour quels usages!! y a des avis tellement contradictoires sur internet !!!
Y a une technologie VERT.X qui présente des caractéristiques similaires !! javascript , non bloquant, monothread, avec une gestion facile des sockets !!!
Si quelqu'un a du biscuit ??!!

A2bd184242d04709c7654ca4f43c3510?s=200&r=pg&d=mm
Pickachu, 20-11-2012 19:04:53 - Répondre

Très bon tuto !

Je connaissais déjà, mais c'est très bien expliqué. J'attend la suite des tutos NodeJs avec avec impatience !
Pour l'"id" au lieu d'utiliser le mail (qui pourrait être redondant si 2 utilisateurs utilisent le même mail), tu peux récupérer "socket.id" qui est unique par utilisateur dans server.js :

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

socket.on('login', function(user){
me.id = socket.id;
});

});

29f4b0fd5ec9d11f0b2d77852b6a7a79?s=200&r=pg&d=mm
lipaonline, 20-11-2012 09:59:46 - Répondre

très bon tuto "as usual" ;) ... par contre pour la suite, je verrai + une interface avec MongoDB et ses possibilités en json.. non ?

Etant dev PHP,C++ etc... j'ai des lacunes en js... -> j'ai un peu de mal a voir toutes les possibilités de Node... par où commencer ? une donc jQuery ? un tuto ? des suggestions ??

@+
Pat

Da7f80856fb5d82ba72e71d8c932b4e7?s=200&r=pg&d=mm
Raph, 19-11-2012 22:18:08 - Répondre

Super tutoriel ! Même les nouvelles technos qui paraissent compliquées deviennent rapidement très simple avec ce genre de "réalisation".

Petite question : D'après ce que je vois, il est envisageable de créer un Forum, voir un CMS complet en utilisant node.js.
Si je ne me trompe pas, node.js peut gérer une très forte charge, et a en plus l'avantage d'offrir une interface qui a répond en temps réel !
Cela me paraît être idéal pour un script de type forum non ?

Ou bien est-ce que je commets une grosse erreur de raisonnement ? Car cela m'étonne de n'avoir vu encore aucun projet allant dans ce sens... Y-a-t-il une raison à cela ?

868a13f6e30bc5b34df2ff6a644c2094?s=200&r=pg&d=mm
jmStudio, 20-11-2012 00:43:22 - Répondre

Bonsoir,

Tu peut en effet créer un forum dans la théorie comme dans la pratique mais c'est comme faire bruler une foret pour faire cuire un steak (en même temps si j'avais dit faire un feu dans son jardin vous m'auriez parlé du barbecue).

Bref, en informatique on peut tout faire avec une suite de 0 et de 1, le tout c'est de le faire avec logique et discernement.

Da7f80856fb5d82ba72e71d8c932b4e7?s=200&r=pg&d=mm
Raph, 20-11-2012 22:06:34 - Répondre

Pourrais-tu m'en dire un peu plus ? Pourquoi serait-ce si inadapté ?
J'imagine à quoi cela pourrait ressembler : un mélange entre IRC, un salon Jabber et un forum classique : Des informations qui arrivent en continu, une liste de connectés en temps réel, et même par Topic.
Est-ce si peu enviable ? Peut-être ai-je trop en tête le genre de forum super actif ? C'est sûr que pour un forum très peu fréquenté, le taux de rafraichissement n'est pas si intéressant...

Mais pour un forum très fréquenté, j'ai les yeux qui pétillent en imaginant des nouveaux sujets apparaitre en temps réel moi, etc....

Non ? Pas de plus value par rapport à du PHP + un peu de JS pour "animer" ?

868a13f6e30bc5b34df2ff6a644c2094?s=200&r=pg&d=mm
jmStudio, 21-11-2012 16:50:42 - Répondre

Bah pour t'en dire plus,

Déjà, on appel un forum un forum et un chat un chat.
En bref, il y a des conventions sociales sur internet et un forum annonce à la différence d'un chat le statut possiblement différé des réponses.

Mais aussi le javascript doit rester optionnel. Un système de notification dynamique est un plus mais l'utilisateur peut aussi s'en passer alors que ce dont tu me parle oblige l'utilisateur à comme ça a déjà été dit ouvrir un port et exécuter un script.

17dd816d0f7714e684eb4c9657ebd2df?s=200&r=pg&d=mm
Agideo, 19-11-2012 22:07:13 - Répondre

Moi, je trouve ça juste Génial !!!
C'est énorme les possibilités que ça offre, j'attend avec impatience les tutos Nodejs / Mysql !

Mais je me demande tout de même, il y a t-il des inconvénients pour le déploiement en production ? On peu faire des clusters nodejs ? Et enfin, peu t-on en abuser ? (Faire un service de tracking de click, par example..) ?

22109
coloo, 19-11-2012 21:46:09 - Répondre

Est-il possible de faire des chats privées (admin-1 utilisateurs ?)

60730aeebdcc7074de2c2e65faf25d1e?s=200&r=pg&d=mm
OlivierBE, 18-11-2012 12:59:20 - Répondre

Comme d'habitude très bon Tuto alias "première piste ;o)))". Technologie très intéressante qui a tendance à générer de nouvelles idées d'application ;o))))
Mais faire le bon choix du port (car chez les clients ce peut être un gros problème (sécurité, donc limitation de divers ports)..

868a13f6e30bc5b34df2ff6a644c2094?s=200&r=pg&d=mm
jmStudio, 18-11-2012 06:06:44 - Répondre

Superbe tutoriel comme d'habitude :D

Mais à la place du chat moi, je rebondirai sur le tuto des notifications, on peut avertir l'utilisateur du site en temps réel si il a une nouvelle réponse sur un topic, un nouveau message privé, une invitation d'un ami...
Et en poussant le truc au paroxysme, le truc des visiteurs sur une page bah on peut le savoir en temps réel. C'est plus simplement ceux qui l'ont chargés il y a moins de 5mn.

Enfin surtout, on a une application Client/Server par navigateur en temps réel sans passer par un applet Java.

57c80e1019756bb4a13ac84530c7d0b2?s=200&r=pg&d=mm
LegendPJ, 17-11-2012 22:26:47 - Répondre

Super Tuto, une fois encore ! Merci bien :)

Bef4e03b067062f13c62498f6c438d76?s=200&r=pg&d=mm
Franck55, 17-11-2012 20:34:37 - Répondre

Salut Graf,

Tutoriel très intéressant (comme d'hab remarque), je me demandais si il était possible d'embarquer node.js sans forcement l'installer sur le serveur, pour pouvoir créer des applications qui permette à tous de l'utiliser sans forcement devoir faire des installation coté serveur.

Merci

C8016f1a9c30c065934423a09240b3ab?s=200&r=pg&d=mm
zebulonbof, 17-11-2012 22:50:00 - Répondre

Il y a aucune utilité à utiliser node.js coté client uniquement puisque le javascript est déjà natif et non bloquant de ce coté ...

Par contre tu peut faire une app complète avec node.js et des modules (redis, jade) et monter une architecture MVC comme avec du php.

Bef4e03b067062f13c62498f6c438d76?s=200&r=pg&d=mm
Franck55, 18-11-2012 11:36:20 - Répondre

Merci pour la réponse zebulonbof,

Je vais tester ça, je suis en train de voir pour installer l'IDE Cloud9 qui à l'air plutôt pas mal et qui est basé sur Node.js

2d792b70c1b76c400dd4c3ba3e435bb5?s=200&r=pg&d=mm
teol, 17-11-2012 15:17:33 - Répondre

Ca veut dire que si on veut lancer le serveur en continu sous Linux, il faut faire un screen voir un daemon?

900d5ee764e2a53d57b5cdcd67781b3f?s=200&r=pg&d=mm
Candir Vincent, 17-11-2012 12:23:32 - Répondre

Bonjour,

Vraiment très sympa ce tuto, très clair.

Après avoir téléchargé les sources, j'ai eu des problèmes pour lancer le chat.
Il bloquait ici :

/var/www/chat/node_modules/MD5/md5.js:9
if (message.constructor == String)
^
TypeError: Cannot read property 'constructor' of null
at md5 (/var/www/chat/node_modules/MD5/md5.js:9:16)
at module.exports (/var/www/chat/node_modules/MD5/md5.js:143:42)
at Socket.<anonymous> (/var/www/chat/server.js:54:48)
at Socket.EventEmitter.emit [as $emit] (events.js:96:17)
at SocketNamespace.handlePacket (/var/www/chat/node_modules/socket.io/lib/namespace.js:335:22)
at Manager.onClientMessage (/var/www/chat/node_modules/socket.io/lib/manager.js:487:38)
at WebSocket.Transport.onMessage (/var/www/chat/node_modules/socket.io/lib/transport.js:387:20)
at Parser.<anonymous> (/var/www/chat/node_modules/socket.io/lib/transports/websocket/hybi-16.js:39:10)
at Parser.EventEmitter.emit (events.js:96:17)
at opcodeHandlers.1.finish (/var/www/chat/node_modules/socket.io/lib/transports/websocket/hybi-16.js:288:16)

Cela correspond au fichier server.js ligne 52

socket.on('login', function(user){
me = user;
me.id = md5(user.mail); // On génère une clef unique par utilisateur (basé sur le mail)
me.mail = null; // On ne renvoit pas l'email publiquement
me.avatar = 'https://gravatar.com/avatar/' + md5(user.mail) + '?s=50';
socket.emit('logged');
users[me.id] = me;
io.sockets.emit('newusr', me);
});

Pour que cela fonctionne, j'ai inverser les lignes qui supprime la var me.mail avec me.avatar

socket.on('login', function(user){
me = user;
me.id = md5(user.mail); // On génère une clef unique par utilisateur (basé sur le mail)
me.avatar = 'https://gravatar.com/avatar/' + md5(user.mail) + '?s=50';
me.mail = null; // On ne renvoit pas l'email publiquement
socket.emit('logged');
users[me.id] = me;
io.sockets.emit('newusr', me);
});
On dirait qu'il n'aime pas trop le clone de me = user.

Bonne journée

1be60808049b010c4ca8510730d52086?s=200&r=pg&d=mm
Rtransat, 17-11-2012 19:48:54 - Répondre

Même erreur pour ma part, j'ai bien installé les 2 modules.

Bef4e03b067062f13c62498f6c438d76?s=200&r=pg&d=mm
Franck55, 18-11-2012 14:31:58 - Répondre

Salut,

Il faut remplacer
me.mail = null;

par
me.mail = 'null';

et tout rentre dans l'ordre.

C8016f1a9c30c065934423a09240b3ab?s=200&r=pg&d=mm
zebulonbof, 18-11-2012 16:32:17 - Répondre

Il suffit de passer par une autre librairie, j'en utilise une plus complète sha1 md5 etc ... et ça fonctionne. Peut être que graph à la solution liée à ça librairie, en attendant voilà la mienne :

dans la console -> npm install crypto

ajouter var crypto = require('crypto'); à la place de l'appel de la lib md5

et pour l'avatar :

me.avatar = 'https://gravatar.com/avatar/' + crypto.createHash('md5').update(user.mail).digest('hex') + '?s=50';

Voilà ;)

08478a7049cc24ac7fee6715586f0964?s=200&r=pg&d=mm
zkiller, 17-11-2012 06:59:14 - Répondre

J'aime bien, pourquoi le code source est différent de celui de la démo ?

Chez AppFog je suis pas capable de démarrer mon application car il ne trouve pas md5?

1
Grafikart, 17-11-2012 13:07:36 - Répondre

Les modules ne sont pas inclus, à toi de les installer (npm install socket.io / npm install md5)

82a8c93d1b8d2288f33b553b65524bfd?s=200&r=pg&d=mm
codimix, 17-11-2012 19:22:10 - Répondre

Grafikart, c'est possible de faire un tuto sur appfog ? :)
J'ai trouvé pas mal comme service :D

08478a7049cc24ac7fee6715586f0964?s=200&r=pg&d=mm
zkiller, 18-11-2012 02:29:18 - Répondre

J'ai installer les modules en local puis j'ai fait un update du dossier mais quand je tente d’accéder au site ça tourne en rond et me retourne aucune erreur.

Aurait tu une idée ?

1b7fc5d8748ce1ffb8c6568af2df44f3?s=200&r=pg&d=mm
JulienMario, 17-11-2012 01:28:57 - Répondre

Ce tuto est tout simplement génial, merci beaucoup !

J'ai hâte de voir d'autres tutos avec Node, c'est vraiment un système intéressant

D156894d3191a0036de60336cefaba8b?s=200&r=pg&d=mm
Ya, 17-11-2012 00:47:34 - Répondre

Faisable sous mutualisé ?

2d792b70c1b76c400dd4c3ba3e435bb5?s=200&r=pg&d=mm
teol, 17-11-2012 15:16:58 - Répondre

Non :-/

331a7f4f1f9aa83a0af2ae20a91ee266?s=200&r=pg&d=mm
tima, 18-11-2012 10:58:16 - Répondre

argh.... merci pour la réponse que je me posais.

A0e0c1934142c2f0bac6881c18df38d0?s=200&r=pg&d=mm
Benha D. Zakaria, 16-11-2012 22:24:54 - Répondre

Terrible, merci encore j'attends la suite avec impatience :D

4bdf7f55bd2f5e0bfbe76ac646de04e8?s=200&r=pg&d=mm
El-CasseGrain, 16-11-2012 22:02:51 - Répondre

Bonjour,

1° à quand remonte cette nouvelle charte graphique de grkrt?!! <3
2° Ravi de voir que tes tutos sont toujours aussi pointu voir plus !
3° Des fois tu nous prend pour des kikous !!
4° Tant mieux !
5° Merci on va faire des sous avec ce chat ! A quand un tuto webmarketing ?
6° 1265 jours que je vais mettre pour faire ce tuto !
7° Cette liste à puce c'est pas chiant ?
...

Continue de nous faire progresser ! Tu es un peu notre modèle dans le milieu francophone.
On te kiffe GraphicArt !

9749
mikachu, 16-11-2012 22:01:32 - Répondre

Tres sympa come tuto merci.

Pourquoi ne pas implémenter ce système sur le site a la place du IRC.

Je penses que cela serait plutôt interessant non?

571bfe3c3ef19500d6831c68d368332f?s=200&r=pg&d=mm
toarii, 16-11-2012 21:13:26 - Répondre

Merci, depuis le temps que je chercher un bon tuto :)

2118ff434ebd8f94380c37900cddf2fb?s=200&r=pg&d=mm
halfjo, 16-11-2012 20:00:38 - Répondre

Merci pour ce ptit tuto :)
Il existe pas mal de script permettant ne ne pas avoir à reboot le server a chaque manip, sa peux servir, à titre d'exemple => https://github.com/isaacs/node-supervisor
(utile également en cas de crash server, mais jamais utilisé en prod :/ )

J'en profite pour vous demandez si certains d'entre vous ont installé node en parallèle d'ubuntu(12.04). Sa n'a pas l'ai trés compliqué en lisant les tutos sur le sujet, mais j'aimerais avoir vos retours si vous avez tenté l'expérience (notamment en terme de ressources ;) ).

bonne soirée

1254
Samovar, 16-11-2012 19:51:30 - Répondre

J'aime bien, mais on est obligés d'indiquer le port si on le met sur un hebergeur ? ...

2118ff434ebd8f94380c37900cddf2fb?s=200&r=pg&d=mm
halfjo, 16-11-2012 20:06:44 - Répondre

Non, tu peux le mettre sur le port 80 (default), ou faire des redirections etc... Par contre je ne peux pas t'en dire plus, j'en suis pas encore là.

5bc886d9a08ceb98ddcd710149c53822?s=200&r=pg&d=mm
mezigh, 16-11-2012 19:26:17 - Répondre

Super !
Nodejs c'est javascript sans navigateur - ce qui en soit est Une révolution

0a2bfa6d38c6152f853f90f3d6367868?s=200&r=pg&d=mm
duffJohn, 16-11-2012 17:56:29 - Répondre

Mon taf de ce soir ^^ merci pour ce tuto Graf ;)

26574
Benjamin Derepas, 16-11-2012 17:50:14 - Répondre

Encore un super boulot, merci !

PS : on ne peut plus mettre le lecteur en fullscreen ?

E7cddb2b4dd15d9254d41ac757a6e11e?s=200&r=pg&d=mm
Alpha13, 16-11-2012 17:05:50 - Répondre

Merci bien ;)