IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Communication node.js <=> PHP


Sujet :

NodeJS

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Par d�faut Communication node.js <=> PHP
    Bonjour et merci d'avance pour votre aide.
    Voila plus d'une semaine que j'essaie d'impl�menter un websocket avec un projet MVC(CakePHP).
    Mais sans succ�s.

    Ma derni�re id�e et d'utiliser d'ajouter un serveur node.js comme relais pour le service de chat, notification et d'identification.
    �bauche de process:
    Connexion
    • Utilisateur utlise de formulaire de connexion
    • Node.js renvoie ses donn�es avec l'ID socket � l'application
    • L'application traite les donn�es et renvoie le r�sultat.

    Notification
    • L'application enregistre un nouvelle donn�e.
    • La notification est envoy� � node.js
    • node.js distribue la notificaiton �/aux utilisateur(s)


    Mon raisonnement tient la route ?
    Cot� client c'est pas un soucis. J'utilise en ce moment socket.io et celui-ci est fonctionnel.
    Par contre cot� serveur, j'ignore si node.js peut envoyer des requ�tes (type Ajax par exemple) � mon application ?

    Merci � vous,

  2. #2
    Membre �m�rite
    Avatar de Gnuum
    Homme Profil pro
    Architecte de syst�me d'information
    Inscrit en
    Mars 2007
    Messages
    215
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (�le de France)

    Informations professionnelles :
    Activit� : Architecte de syst�me d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 215
    Billets dans le blog
    1
    Par d�faut
    Le plus simple (et le plus scalable) pour faire communiquer Node.js avec PHP est encore de faire une API de webservices HTTP en PHP et de les appeler avec Node.js.

    Cependant, si tu comptes faire une application "temps r�el", je te conseillerais d'�viter le passage par un quelconque script PHP (via une API ou autre) qui risque de te rajouter un temps de latence assez d�sagr�able suivant le type d'application que tu d�sires faire (un chat rentre certainement dans cette cat�gorie).

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Par d�faut
    Ravi de te lire et merci, Gnuum

    une API de webservices HTTP en PHP et de les appeler avec Node.js.
    J'avais d�j� aper�u quelques articles "API REST" c'est en lien avec ce que tu me dis ou �a n'a aucun rapport ?


    Concernant le chat, �a peu se faire avec node.js et socket.io. Y'aura juste � sauvegarde dans la base de donn�e le message en parall�le.
    Mais �a sera juste entre utilisateur connect�. En gros, comment mettre de concert les sessions websocket et cakePHP ? (je g�re mes session dans une base de donn�e)

    Comme je connais pas tr�s bien node.js, j'ai utiliser le module request
    C'est le module qui convient ou tu me conseil un autre ?

    Merci � toi

  4. #4
    Membre �m�rite
    Avatar de Gnuum
    Homme Profil pro
    Architecte de syst�me d'information
    Inscrit en
    Mars 2007
    Messages
    215
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (�le de France)

    Informations professionnelles :
    Activit� : Architecte de syst�me d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 215
    Billets dans le blog
    1
    Par d�faut
    Merci c'est gentil!

    Oui tout � fait REST est une architecture d'API qui est fond�e sur le HTTP et qui est stateless (ce qui veut dire que tu n'utilises pas de session car le client ne doit pas laisser d'�tat sur le serveur).
    Je ne sais pas si dans ton cas c'est possible ou si tu as vraiment besoin de partager la session PHP et la session Node.js. En g�n�ral, c'est bien d'essayer d'utiliser la session au minimum de ses capacit�s (surtout pour g�rer la s�curit� en gros).

    Si tu dois choisir entre appeler une API PHP ou requ�ter ta base de donn�es en direct avec Node.js, je te conseille plut�t la 2e option si tu veux maximiser la performance et ne pas risquer un r�sultat potentiellement d�cevant. Apr�s, la d�cision peut d�pendre de l'architecture globale que tu souhaites donner.

    En ce qui concerne le partage de session, normalement l'id de session est dans un cookie (en PHP le cookie s'appelle g�n�ralement quelque chose comme PHPSESSID). A chaque requ�te, les cookies sont envoy�s dans les headers au serveur. Donc normalement, avec une requ�te sur un serveur HTTP Node.js, les cookies sont pass�s �galement, donc pas de probl�me si tes sessions sont en base de donn�es. Sauf que... tu utilises socket.io pour faire du temps r�el. Dans ce cas, tu cr�es un tunnel TCP entre le client et le serveur et tu ne passes plus de headers "� chaque requ�te" (qui dans ce cas sont plut�t appel�s des messages). Il faut donc, � la connexion, passer ton cookie de session pour pouvoir matcher toi m�me. A toi de conserver l'information tant que ton socket est en vie!

    Voici un code, que je fais un peu � l'arrache pour que tu l'aies ce soir (faudra certainement le corriger car pas test�):

    C�t� client
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function getCookie(name) {
        var value = "; " + document.cookie;
        var parts = value.split("; " + name + "=");
        if (parts.length == 2) return parts.pop().split(";").shift();
    }
     
    var socket = io();
     
    socket.on('connect', function(data) {
        socket.emit('sendSession', { sessionId: getCookie('PHPSESSID') });
    });

    C�t� serveur
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    io.on('connection', function(socket) {
        socket.on('sendSession', function(data) {
            var sessionId = data.sessionId;
     
            // TODO: retrieve your session from the database or send it to your PHP API with each request.
        });
    });

    N'h�site pas � me dire si je ne suis pas clair!

    PS: Si tu d�cides de requ�ter ton API PHP, request est effectivement un bon outil pour jouer le r�le de client HTTP!

  5. #5
    Membre �clair�
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Par d�faut
    Parfait, je met en tout �a en place et je reviens vers toi pour t'en informer.
    Encore merci et une agr�able journ�e,

  6. #6
    Membre �m�rite
    Avatar de Gnuum
    Homme Profil pro
    Architecte de syst�me d'information
    Inscrit en
    Mars 2007
    Messages
    215
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (�le de France)

    Informations professionnelles :
    Activit� : Architecte de syst�me d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 215
    Billets dans le blog
    1
    Par d�faut
    Oui, je veux bien que tu me tiennes au courant de comment tu fais au final!

    Bonne journ�e � toi aussi.

Discussions similaires

  1. Communication entre programme c et php
    Par dashed dans le forum C
    R�ponses: 2
    Dernier message: 10/06/2013, 18h40
  2. R�ponses: 8
    Dernier message: 03/11/2011, 12h16
  3. R�ponses: 3
    Dernier message: 27/09/2006, 11h41
  4. Php/ASP.NET, modules communs ?
    Par Endae dans le forum G�n�ral Conception Web
    R�ponses: 6
    Dernier message: 12/10/2005, 16h07
  5. [XSL] nodes en commun
    Par kendras dans le forum XSL/XSLT/XPATH
    R�ponses: 6
    Dernier message: 04/08/2005, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo