node.js running alongside Apache PHP?

后端 未结 5 1934
后悔当初
后悔当初 2021-01-30 01:56

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 i

相关标签:
5条回答
  • 2021-01-30 02:10

    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
    
    0 讨论(0)
  • 2021-01-30 02:25

    I suspect the chat as well as the logged in listing would work via Ajax.

    The chat part would be pretty easy to program in Node.js, use one of the mysql modules for Node to connect to your existing database and query login information and such and then do all the actual chatting via Node.js, I recommend you to check out Socket.io since it makes Browser/Node.js communcation really trivial, this should allow you to focus on the actual chat logic.

    Also, you could take a look at the "official" chat demo of Node.js, for some inspiration.

    As far as the currently online part goes, this is never easy to implement since all you can do is to display something along the lines of "5 users active in the last X minutes".

    Of course you could easily add some Ajax that queries the chat server and display the userlist from that on the homepage.

    Or you completely crazy and establish a Socket.io connection for every visitor and monitor it this way, although it's questionable whether this is worth the effort.

    0 讨论(0)
  • 2021-01-30 02:31

    You can run php from node js using node-php: https://github.com/mkschreder/siteboot_php

    0 讨论(0)
  • 2021-01-30 02:33

    I'm running a wss (secure websocket) server alongside my LAMP setup.

    Node.js can easily run alongside any other web server (apache) you want. In @KitCarrau example, he lets node run on port 8084 - that's where it's running and listening to, not 80 or 443 etc (those are usually taken by apache anyway). But you can still use the same port to also serve http/https (in my case just stating some conf and general info that the service is up).

    Starting from the console isn't the best way (remotely, node stops when closing the console). I recommend taking a look at Running node as service

    Easy to track log in realtime (log with console.log("hello"); in your application) with:

    tail -f /var/.../SocketServer.log
    

    Sample script (node-server.conf):

    author ....    
    description "node.js server"    
    # used to be: start on startup
    # until we found some mounts weren't ready yet while booting:
    
    start on started mountall
    stop on shutdown
    
    # Automatically Respawn:
    respawn
    respawn limit 99 5
    
    # Max open files are @ 1024 by default. Bit few.
    limit nofile 32768 32768
    
    script
        # Not sure why $HOME is needed, but we found that it is:
        export HOME="/root"
    
        exec node /var/.../SocketServer.js >> /var/www/node/.../SocketServer.log 2>&1
    end script
    
    post-start script
       # Optionally put a script here that will notifiy you node has (re)started
       # /root/bin/hoptoad.sh "node.js has started!"
       echo "\n*********\nServer started\n$(date)\n*********" >> /var/.../SocketServer.log
    
    end script
    
    0 讨论(0)
  • 2021-01-30 02:36

    What about using a socket file just like pedro did with ngnx ? http://nodetuts.com/tutorials/25-nginx-and-nodejs.html

    0 讨论(0)
提交回复
热议问题