저는 Node.js와 Socket.io로 작은 채팅 응용 프로그램을 쓰고 있습니다. 모든 라이브 연결에 대한 참조를 유지하는 객체 인 connections
이 있습니다 (예 : (의사) :Node.js의 동시 수정에 대해 걱정할 필요가 있습니까?
for (var i=0; i<connections.length; i++) {
// do something with connections[i] // (3)
}
질문 : 내가 연결 개체를 반복 코드, 예를 들면의 다른 부분에서 이제
var connections = {};
...
io.on("connection", function(socket)){
connections[socket.id] = socket; // (1)
socket.on("disconnect", function(){
delete connections[socket.id]; // (2)
});
}
소켓의 disconnect
이벤트 항목을 삭제 될 위험이 있는가 (2)
connections
객체에서 루프가 실행 중일 때 (3)
오류가 발생합니까? 그렇다면 모범 사례는 무엇입니까?
루프를 완료 한 후에 만 삭제할 수 있으며 제거해야하지만 필요합니까? 감사!
아니요, JavaScript는 단일 스레드입니다. 루프가 실행 중이면 다른 코드를 실행할 수 없습니다. – Paulpro