2012-07-22 2 views
0

나는 원하는 것을 위해 Comet을 사용하는 것이 가장 좋은 응용 프로그램을 만들고 told입니다. 필자는 지금까지 Comet에 대한 경험이 없었지만 약간의 연구 끝에 CometD 서버를 설치했습니다. APE가 포함 된 다른 서버도 있지만 마지막 개정이 된 지 얼마되지 않아서 CometD에 대한 문서가 훨씬 개선되었습니다.CometD를 사용하여 파일을 지속적으로 보려는 경우

내 경험이 부족하기 때문에 어디서부터 시작해야할지 몰라서 문서가 이에 대한 구체적인 사례를 다루지 않습니다.

서버가 .txt 파일을 지속적으로보고 변경 내용을 HTML 페이지에 표시하려고합니다. 주기적으로 해당 파일이 변경되며 (약 2 ~ 3 분마다) 변경된 경우 새 클라이언트 문서가 연결된 클라이언트에 표시됩니다.

내가 할 수 있다고 가정하고, JS를 수정하여 단독으로 수행 할 수 있다고 상상합니다. 내 유일한 질문은 ... 어떻게 시작해야합니까?

답변

1

official tutorial에 설명 된대로 JDK 7의 파일 감시자 서비스를 사용하여 파일 변경을 감시 할 수 있습니다.

변경 사항을 감지 한 사용자는 채널에서 CometD 메시지를 브로드 캐스트 할 수 있으며 JavaScript 클라이언트는 해당 채널에서 메시지를 수신 할 수 있습니다. http://docs.cometd.org의 3.3.5.5 섹션을 참조하십시오.

응용 프로그램 논리에 따라 전체 파일 또는 델타를 전송하도록 선택할 수 있습니다.

요약하면 파일 변경을 감시하려면 서버 측에서 일부 논리가 필요하며 파일을 수신 할 클라이언트의 일부 논리는 변경되어 표시됩니다.

+0

답변 해 주셔서 감사합니다. 서버가 파일 변경을 감시 할 필요없이 파일이 방금 업데이트되었다는 메시지를 서버에 전달할 수 있다면 어떨까요? 예를 들어 PHP에서 함수를 사용하여 파일을 업데이트하고 있습니다. 그 기능 내에서 새 파일을 읽고 새 버전을 클라이언트에 보내기 위해 서버를 "뾰족하게 (nudge)"할 수있었습니다. 그게 가능할까요? – dplanet

+0

예, 가능합니다. CURL을 사용하여 특정 URL에 대한 요청을 수행함으로써 CometD 서버 (결국 HTTP 서버 임)에게 "알리는"사람들을 알고 있습니다. 해당 URL에 매핑 된 서블릿은 파일을 읽고 CometD 푸시를 수행하는 로직을 트리거 할 수 있습니다. 그러나 JMS 알림, HTTP 요청, 파일보기 등 어떤 것도 작동합니다. – sbordet

관련 문제