对nodeJS感到困惑

时间:2013-12-28 18:46:07

标签: node.js sockets socket.io

我不知道这个问题在SO中是否正确,如果没有告诉我,我会移动它。

我已经习惯Rails了,我对nodeJS感兴趣,我想了解non blocking连接的含义。

这是否意味着与database存在持久连接? (显式是socket.io提供了吗?)如果存在大量持久连接,服务器如何处理它们?

顺便说一下,我读到nodeJS不需要数据库的返回值来完成函数的处理,从而加快了处理速度。是吗?

1 个答案:

答案 0 :(得分:1)

非阻塞是指I / O,例如访问硬盘驱动器上的文件,查询数据库。如果你们每次使用像jQuery这样的东西都会这样想:

$.post('file.php', function (results) {
    // do something with 'results', which was sent back to use from 'file.php'
    console.log("Results returned...");
}, "json");

console.log ("End!");

现在在客户端,javascript将发出此POST请求,但它不会等待它返回结果。控制台将输出“结束!”在它输出“返回的结果......”之前。 Node很像那样。你传递了许多匿名函数作为回调然后响应。这是一个数据库示例(node-mysql):

connection.query('SELECT * FROM table1', function(error, rows) {
    if( error ) throw error;

    // do something with rows (an array)
});

查询完成后,将调用传递给connection.query方法的'function(error,rows)'。就像上面的jQuery $ .post示例一样,它不会停止并等待。这允许节点在此期间做其他事情。

我希望我解释得很好。我曾经不喜欢javascript,jQuery治愈了我,现在节点是我梦寐以求的。 :d