>

파일을보고 해당 파일에서 내용을 가져 오는 응용 프로그램을 만들고 있습니다 (꼬리와 비슷하지만 이전 데이터에서도 페이징 될 가능성이 있음). 나는 새로운 프로세스를 생성하는 것에서부터 파일의 업데이트 된 바이트 만 얻는 것에 이르기까지 꽤 많은 해결책을 읽었지만 여전히 몇 가지 부분에 약간 혼란 스럽습니다.

정확하게하고 싶은 것은 다음과 같습니다 :

  • 새 데이터가 파일에 들어올 때마다 파일을보고 이벤트/콜백을 트리거합니다
  • 파일에서이 새 데이터를 읽고 효율적으로 클라이언트로 보냅니다. 웹 소켓 또는 다른 것을 사용합니다. (이 작업을 수행하는 좋은 방법을 제안하십시오)
  • 클라이언트 측에서는이 데이터를 가져 와서 사용자에게 표시하고 새로운 데이터로 계속 업데이트합니다
  • 사용자가 이전 데이터를 요청하는 경우보고있는 파일에서 해당 데이터를 가져 오는 방법

위의 하위 문제에 대한 효율적인 솔루션을 찾고 있으며 더 나은 접근 방식에 대한 제안도 환영합니다.

FYI 저는 nodejs를 처음 사용하므로 솔루션의 장황함을 높이 평가합니다.


  • 답변 # 1

    변경 사항 감시

    chokidar를 살펴 보자. fs.watch, fs.events, 기본 node.js 라이브러리의 최적화 된 구현입니다.

    // Initialize watcher.
    const watcher = chokidar.watch('some/directory/**/*.xml', config);
    // Add event listeners.
    watcher
      .on('add', path => log(`File ${path} has been added`))
      .on('change', path => log(`File ${path} has been changed`))
      .on('unlink', path => log(`File ${path} has been removed`));
    
    
    변경된 값을 얻으려면

    여기서 diff 모듈을 볼 수 있습니다. 그리고 이전 및 현재 파일의 상태를 저장해야합니다. 변경 사항을 작성하려면

    고객에게 알리려면

    웹 소켓 서버를 만들어야하고 socket.io를 사용하는 것이 좋습니다. 그런 다음 응용 프로그램에서 diff를 만들고 웹 소켓 메시지를 서버에 보냅니다. 서버는 필요한 클라이언트에게 메시지를 알리거나 브로드 캐스트합니다.

  • 이전 powershell 50 및 51의 Get-ChildItem
  • 다음 Linux에서 VID/PID가있는 장치를 추가하는 방법