簡體   English   中英

node.js和Apache PHP一起運行?

[英]node.js running alongside Apache PHP?

我試圖讓我的頭圍繞node.js ...

我對我的LAMP設置非常滿意,因為它目前符合我的要求。 雖然我想在我的PHP應用程序中添加一些實時功能。 例如顯示當前登錄我網站的所有用戶以及可能的聊天功能。

我不想替換我的PHP后端,但我確實想要可擴展的實時解決方案。

1.我可以將node.js放入混合中以滿足我的需求而無需重建整個應用程序服務器端腳本嗎?

2. node.js如何最好地為我的“聊天”和“當前登錄”功能提供服務?

很高興聽到你的意見!

W.

我建議你在side node.js上使用Socket.io。 http://socket.io/安裝並下載libs。 您可以在Apache服務器旁邊運行它沒有問題。

首先創建一個節點服務器:

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

其次,使用以下命令從命令行運行服務器:

node /path/to/your/server.js

第三,使用客戶端js連接到套接字:

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

您還必須包含socket.io lib客戶端。

使用以下方法將數據從客戶端發送到節點服務器:

socket.send({data:data});

您的server.js還應具有處理請求的功能:

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
  });
});

將數據從服務器發送到客戶端有兩種主要方式:

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

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

我懷疑聊天以及登錄列表都可以通過Ajax工作。

聊天部分很容易在Node.js中編程,使用其中一個mysql模塊連接到現有數據庫並查詢登錄信息等,然后通過Node.js進行所有實際聊天,我建議你檢查Socket.io,因為它使Browser / Node.js通信真的很簡單,這應該讓你專注於實際的聊天邏輯。

此外,您還可以查看Node.js的“官方” 聊天演示 ,獲取一些靈感。

就目前的在線部分而言,這絕不容易實現,因為您所能做的就是顯示“最后X分鍾內活躍的5個用戶”的內容。

當然,您可以輕松添加一些查詢聊天服務器的Ajax,並顯示主頁上的用戶列表。

或者你完全瘋了,並為每個訪問者建立一個Socket.io連接,並以這種方式進行監控,盡管這是否值得努力是值得懷疑的。

如何使用套接字文件就像pedro一樣使用ngnx? http://nodetuts.com/tutorials/25-nginx-and-nodejs.html

你可以使用node-php從節點js運行php: https//github.com/mkschreder/siteboot_php

我正在運行一個wss(安全websocket)服務器和我的LAMP設置。

Node.js可以輕松地與您想要的任何其他Web服務器(apache)一起運行。 在@KitCarrau示例中,他讓節點在端口8084上運行 - 這是它正在運行和收聽的地方,而不是80或443等(這些通常由apache采用)。 但你仍然可以使用相同的端口來提供http / https(在我的情況下,只是說明服務已啟動的一些conf和一般信息)。

從控制台開始不是最好的方法(遠程,關閉控制台時節點停止)。 我建議看看Running node作為服務

易於實時跟蹤日志(使用console.log(“hello”);在您的應用程序中)使用:

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

示例腳本(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM