Tôi có một máy chủ socket.io
mà nghe socket:Là đa luồng Socket.IO?
io.sockets.on('connection', function(socket){
socket.on('myEvent', function(data){
socket.emit('eventReceived', { status: 1 });
});
});
là mã này làm việc trong multithread? nếu hai khách hàng sẽ phát ra sự kiện myEvent
, nó sẽ hoạt động cùng một lúc cho cả hai khách hàng? hoặc nó sẽ được xử lý một cái khác?
Rất cám ơn!
Không, nó không đa luồng. Node.js sử dụng một vòng lặp sự kiện luồng đơn. Xem [câu trả lời này] (http://stackoverflow.com/questions/9362823/why-is-a-function-and-a-callback-non-blocking-in-node-js/9363071#9363071) của tôi cho một giải thích thêm. –
Nếu Node.js không đa luồng, điều đó có nghĩa là Socket.IO cũng không đa luồng? – udidu
Chính xác. Bạn có thể mở rộng bằng cách chạy phần phụ trợ được phân phối cho tin nhắn, có một [redis store] (https://github.com/LearnBoost/socket.io/blob/master/lib/stores/redis.js) được tích hợp sẵn. –