【发布时间】:2018-09-04 15:02:11
【问题描述】:
我正在尝试在 node.js 中构建我的服务器。我正在使用 socket.io。
类似的东西:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
我知道 node.js 中的 IO 是异步的,但是如果我在“连接”中调用一个函数,比如读取文件,它仍然是异步的还是会阻塞主线程?我不确定,我的理解是,在异步 IO 中调用的所有内容也是异步运行的,不会阻塞主线程。
【问题讨论】:
-
我知道node.js中的IO是异步的你为什么会知道这个?您必须显式调用所需的 I/O 方法的异步版本。这不是自动的。
-
它仍然在单个“主”线程上运行(并且会阻塞它) - 它只是在 稍后 运行(这就是 asynchrony 的意思) .
-
那么是否有可能编写一个可以处理大量流量的优秀 node.js 服务器?举个例子,一次有 1000 个用户请求?
-
@Olli — 是的。只是不要进行昂贵的阻塞操作(如同步文件系统访问)。
标签: javascript node.js callback socket.io