node.js与Apache PHP一起运行?

我试图让我的头圆节点.js...

我对我的LAMP设置非常满意,因为它目前满足了我的要求。虽然我想在我的PHP应用程序中添加一些实时功能。例如,显示当前登录到我的网站的所有用户以及可能的聊天功能。

我不想取代我的PHP后端,但我确实想要可扩展的实时解决方案。

1. 我是否可以将 node.js 放入组合中以满足我的需求,而无需重新构建整个应用程序服务器端脚本?

2. node.js如何最好地提供我的“聊天”和“当前登录”功能?

很高兴听到您的意见!

W.


答案 1

我建议您在侧节点上使用 Socket.io.js。从 http://socket.io/ 安装并下载库。您可以毫无问题地与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});

您的服务器.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

答案 2

我怀疑聊天以及登录列表将通过Ajax工作。

聊天部分在Node中编程非常容易.js,使用Node的mysql模块之一连接到您现有的数据库并查询登录信息等,然后通过Node进行所有实际的聊天.js,我建议您查看 Socket.io 因为它使浏览器/节点.js通信变得非常微不足道,这应该可以让您专注于实际的聊天逻辑。

另外,您可以查看Node.js的“官方”聊天演示,以获取一些灵感。

就当前的在线部分而言,这从来都不容易实现,因为您所能做的就是显示“过去X分钟内有5个用户处于活动状态”的内容。

当然,您可以轻松添加一些查询聊天服务器的Ajax,并在主页上显示用户列表。

或者你完全疯了,为每个访问者建立一个 Socket.io 连接,并以这种方式监控它,尽管这是否值得付出努力是值得怀疑的。


推荐