Kwai chang caine a écrit :Mais ton histoire de "MODE", j'suis pas très fashion victime, et sincèrement c'est au dessus de mes moyens, même de comprendre
Hello mon Kwai chang caine
Je ne parlerais pas de Mode parce que j'aime la différence (je dis n'importe quoi comme d'hab) , mais de Node.
■
Pour développer un site web on utilise différentes technologies.
Certaines technologies sont interprétés sur le serveur sur lequel est hébergé le site web. C'est le cas du HTML, CSS, Php, MySql, etc ....
D'autres technologies comme JavaScript sont interprétés sur le navigateur de l'utilisateur ce qui n'est pas sans conséquence sur la sécurité des données, mais là n'est pas le débat
■
Node.js phénomène de mode
Tu parles de Mode est tu as raison car Node est devenu un phénomène de Mode.
On voit fleurir des applications dynamiques temps réels (
Rien à voir avec Temps-X et les frères bogdanov) comme FaceBook ou Twitter (
Les tweets arrive automatiquement sur la page que tu consultes) ou encore des messagerie instantanée dans lesquelles les utilisateurs savent en temps réel qui est connecté.
Ce forum n'utilise pas cette technologie. Tu es obligé de rafraîchir la page pour savoir qui est encore connecté (
basées sur les utilisateurs actifs des 5 dernières minutes).
■
Qu'est ce que Node.js
Node.js offre un environnement
événementiel JavaScript côté serveur. C'est un environnement qui fonctionne manière similaire à la bibliothèque Network en PureBasic (
CreateNetworkServer(), SendNetworkData(), ReceiveNetworkData(), ...)
■
Quelques fonctionnalités de Node.js
-http.createServer() pour créer un serveur équivalent en PureBasic à CreateNetworkServer()
-socket.emit() pour envoyer un message ou des informations à un utilisateur.
-socket.broadcast.emit() pour envoyer un message ou des informations à tous les utilisateurs connectés.
-server.listen() le serveur est lancé et attend les ordres sur un port qui sera défini.
■
Un exemple de serveur JavaScript: server.js
1 - Création du serveur
2 - Création d'un socket de communication.
3 - Initialisation d'une variable global numéro d'invité (NumGuest)
4 - Boucle événementielle
4.0 - Un client se connecte
4.0.1 - On lui attribue un numéro de visiteur et on lui renvoie son adresse ip
4.0.2 - On affiche l'information de connexion sur la console (Le client ne le voit pas)
4.1 - Un client se déconnecte
4.1.1 - On affiche l'information de déconnexion sur la console (Le client ne le voit pas)
5 - Le serveur est en écoute
Code : Tout sélectionner
var http = require('http');
var fs = require('fs');
var ent = require('ent');
// Create server (1)
var server = http.createServer( function(req, res) { } );
// Load socket.io (2)
var io = require('socket.io').listen(server);
// Init guests number (3)
var numguest = 0;
// On Client connected (4.0)
io.sockets.on('connection', function (socket, pseudo) {
// New guest (Log socket id and adress ip)
var clientip = socket.request.connection.remoteAddress
console.log("Client socket number :"+ socket.id + " connected");
console.log("Client adress ip : " + clientip);
// Log and send new guest number and ip to client (4.0.1 & 4.0.2)
numguest++;
console.log("New guest number " + numguest);
socket.emit("setnewguest", "GUEST_"+numguest);
socket.emit("userip", clientip);
// On Client disconnect (4.1 & 4.1.1)
socket.on('disconnect', function () {
console.log("Client socket number "+ socket.id + " disconnected");
});
});
//Listen (5)
server.listen(8080);
J'entend déja les futurs commentaires : Mais pourquoi nous parle t'il de JavaScript sur un forum consacré à PureBasic ? Parce que le code suivant en PureBasic va recevoir des informations de ce serveur.
■
Cotés client le code est en PureBasic (et converti en JavaScript
)
De même qu'il est possible d'insérer du code Assembleur, il est aussi possible d'insérer (
Avec Spider Basic par exemple) du code JavaScript.
Ce code ne sert à rien d'autant plus qu'on peut arriver au même objectif sans passer par Node.
1 - Le client se connecte à un serveur
2 - Il reçoit un numéro de visiteur.
Code : Tout sélectionner
Enumeration
#Mainform
#User
#Userip
EndEnumeration
Global socket, connect, userid.s, userip.s
Declare Start()
OpenLibrary(#PB_Any, "https://cdn.socket.io/socket.io-1.3.4.js", @Start())
Procedure Start()
Protected NumGuest, NewMessage.s
;Form
OpenWindow(#Mainform, 0, 0, 500, 400, "Node test connection", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
TextGadget(#PB_Any, 20, 25, 150, 22, "Your guest number")
StringGadget(#User, 175, 20, 150, 22, "", #PB_String_ReadOnly)
TextGadget(#PB_Any, 20, 55, 150, 22, "Your adress ip")
StringGadget(#Userip, 175, 50, 150, 22, "", #PB_String_ReadOnly)
;Client connects
!socket = io.connect('81.64.18.69:8080');
;Client receives a guest number
!socket.on('setnewguest', function(userid) {
SetGadgetText(#User, userid)
!})
;Client receives adress ip
!socket.on('userip', function(userip) {
SetGadgetText(#Userip, userip)
!})
EndProcedure
■
Démo Le serveur node sous windows étant chez moi je ne suis pas certain qu'il tourne correctement en permanence : Surtout si mon pc se met en veille

La démo n'est plus présente. Elle est remplacé par le system de tchat.