Search code examples
phpapachenode.jsserver-sideserverside-javascript

node.js running alongside Apache PHP?


I am trying to get my head round node.js...

I am very happy with my LAMP set up as it currently fulfils my requirements. Although I want to add some real-time features into my PHP app. Such as showing all users currently logged into my site and possible chat features.

I don't want to replace my PHP backend, but I do want scalable real-time solutions.

1. Can I throw node.js into the mix to serve my needs without rebuilding the whole application server-side script?

2. How best could node.js serve my 'chat' and 'currently logged in' features?

Great to hear your views!

W.


Solution

  • I suggest you use Socket.io along side node.js. Install and download the libs from http://socket.io/. You can run it along side your Apache server no problems.

    First create a node server:

    var http = require('http')
      , url = require('url')
      , fs = require('fs')
      , io = require('../')//path to your socket.io lib
      , sys = require(process.binding('natives').util ? 'util' : 'sys')
      , server;
    
    server = http.createServer(function(req, res){
      var path = url.parse(req.url).pathname;
    }),
    
    server.listen(8084);//This could be almost any port number
    

    Second, run your server from the command line using:

    node /path/to/your/server.js
    

    Third, connect to the socket using client side js:

    var socket = new io.Socket(null, {port: 8084, rememberTransport: false});
    socket.connect();
    

    You will have to have include the socket.io lib client side aswell.

    Send data from client side to the node server using:

    socket.send({data:data});
    

    Your server.js should also have functions for processing requests:

    io.on('connection', function(client){
    //action when client connets
    
     client.on('message', function(message){
        //action when client sends msg
      });
    
      client.on('disconnect', function(){
        //action when client disconnects
      });
    });
    

    There are two main ways to send data from the server to the client:

    client.send({ data: data});//sends it back to the client making the request
    

    and

    client.broadcast({  data: data});//sends it too every client connected to the server