Node.js + codeigniter

Dre*_*ahl 12 codeigniter node.js

最近一直在阅读Node.js以及它如何是一个伟大的网络服务器,甚至支持套接字.我正在考虑在我的项目中使用它,但我仍然无法想出从CI到node.js的交互.有一个项目与Drupal一起完成它似乎运作良好但是我仍然无法弄清楚它们是如何将它们集成在一起的.

只是想知道是否有人对这个想法有任何经验.

http://drupal.org/project/nodejs

http://www.youtube.com/watch?v=UV8lbdJfESg
Run Code Online (Sandbox Code Playgroud)

例:

用户通过AJAX发表评论评论获取存储在数据库中所有观看该线程的用户都会收到通知

现在,在提交评论和通知之后,如何将msg发送到node.js

Ray*_*nos 18

node.js是一个非阻塞IO库,可以用作Web服务器.

Code Igniter是一个PHP框架.

您想在PHP Web服务器旁边运行node.js Web服务器并让它们相互通信吗?

我建议你做一个或另一个.重新编写您的整个网站,现在快递.

如果他们必须相互通信,您可以使用在节点中轻松打开TCP套接字net.

var net = require('net');

var server = net.createServer(function (socket) {
  socket.write("Echo server\r\n");
  socket.pipe(socket);
})

server.listen(8124, "127.0.0.1");
Run Code Online (Sandbox Code Playgroud)

然后fsockopen在PHP中使用通过TCP套接字连接到节点.

编辑:

实时评论完全独立于CI.你只需要在你的CI服务器页面上有一些socket.io javascript.您的页面通过单独的套接字与node.js对话,从不触及PHP后端.您的socket.io将数据推送到您的所有客户端,页面将使用javascript呈现新消息.

所有codeigniter需要做的就是插入

<script src="url/socket-io.js" />
<script src="url/myChat.js" />
Run Code Online (Sandbox Code Playgroud)

进一步编辑:

所以你需要你的用户登录你的websocket.我不确定他们现在如何登录,但是向node.js发送相同的用户名/密码哈希应该不会太难.获取node.js以打开与存储用户的数据库的连接.然后存储特定用户在数据库中"订阅"的频道/线程/聊天室/消息.

然后,当节点从"频道"接收到消息时,它只询问数据库哪些用户将该消息推送到,然后推送它.

我回答了一个关于使用节点编写聊天服务器的类似问题,现在的视频教程就是一个很好的例子.你应该可以很容易地将"多个房间聊天"变成"多线程评论".

进一步编辑

comment/add/单击"添加"时不要发布到URL .不要使用ajax.而是使用socket.io.

所以类似于:

// on the client side
$("#add").click(function() {
    socket.send("add" + user.toJSON());
});

socket.on("message", function(m) {
    if (/^new/.test(m)) {
         var post = m.substring(3);
         $("#comments").append($("<div></div>").text(post));
    }
});

// on the server side
var socket = io.listen(server); 
socket.on('connection', function(client){ 
    // new client is here! 
    client.on('message', function(m){ 
        if (/^add/.test(m)) {
             client.broadcast("new"+m.substring(3));
        }
    }); 
}); 
Run Code Online (Sandbox Code Playgroud)

因此,当您单击添加时,客户端只需发送"添加注释"消息.服务器侦听添加消息并将消息广播到所有其他客户端.这些客户端已在侦听新消息,而new会附加注释.