ajax를 사용하여 채팅 응용 프로그램을 작성하고 싶습니다. 그래서 사용자의 메시지 테이블을 100 밀리 초 (0.1 초)마다 데이터베이스에서 검사해야합니다. setTimeOut을 사용하여 매 100 밀리 초마다 아약스를 호출하면 문제가 있습니까? 성능 문제가 있습니까? 어떤 함정이나 뭐?ajax 호출에 setTimeOut 사용
답변
이것은 매우 나쁜 생각입니다. 로컬 시스템과 일부 사용자는 작동하지만 더 많은 사용자에게 쉽게 확장 할 수는 없습니다. 웹 소켓과 긴 폴링을 살펴 보길 권한다.
긴 폴링을 제안하는 중입니다. 그렇다면 그 ..에 대한 예제를 제안 할 수 있습니까? 내가 알고 있듯이 long-polling은 setTimeout ... right를 사용하여 얻을 수 있습니다.? –
@DipeshParmar 긴 폴링과 일반 폴링 간의 차이점은 요청이 시간 초과되는 것을 방지하고 서버가 원할 때 응답한다는 것입니다. 이전 요청이 만료되거나 완료 될 때만 새로운 요청을합니다. 서버가 응답하는 데 소요되는 시간에 따라 다음 요청을 보낼 때 setTimeout을 반드시 사용해야하는 것은 아닙니다. –
@DipeshParmar가 여러 요청을 보내는 것은 긴 폴링이 아닌 짧은 간격으로 여러 번 요청하는 것입니다. 긴 폴링은 본질적으로 서버가 아무런 응답도 쓰지 않고 쓸 데이터가있을 때까지 (또는 요청 시간이 끝날 때까지 몇 초보다 긴 시간이 소요될 수 있음) 요청을 보류한다는 것을 의미합니다. 클라이언트는 현재 요청이 만료되거나 현재 요청이 데이터로 응답을받는 경우에만 새 요청을 만듭니다. – Munim
더 나은 대안은 Socket.IO
을 사용하는 것입니다. 그것은이 작업을하게 훨씬 쉽게
Socket.IO는 socket.io
서버에서 크로스 브라우저 솔루션
예를 만든다 :
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
클라이언트 (브라우저) :
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
편집 :하여 setInterval과의 setTimeout :
는 PHP를 들어, phpwebsocket 클래스가 잘 맞는와 jquery plugin
좋은 제안이고, 나는 node.js 개발자입니다.하지만 질문은 asp.net 및 php라고 태그가 지정되어 있습니다. ASP 않습니다.그물에는 어떤 websocket 같이 해결책이 있는가? – Munim
@Munim IIS7은이를 지원하지 않지만 IIS8은 지원합니다. 나는 PHP에서 웹 소켓이 현재 가능하다고 믿는다. –
저는 asp.net 개발자입니다. 어떻게 asp.net에서 이것을 사용할 수 있습니까 ?? –
자바 스크립트 타이머의 두 종류를 알고 클라이언트 측에 대한 것입니다. setInterval은 매 100 밀리 초마다 작동하고, setTimeOut은 이전 호출보다 100 밀리 초 후에 다음 호출을 처리합니다. 앱을 조정하는 동안이 동작을 염두에 두어야합니다. 또한 별도의 스레드에서 실제로 작업하는 웹 작업자를 고려할 수도 있습니다. 그들은 당신의 문제에 적합한 해결책으로 들리는 메시지 기반의 메시지를 전달합니다. 정확한 지연 시간 (100 밀리 초 이상)은 실제로 시험해 볼 필요가있는 것입니다. John Resig의 저서에 실용적인 타이머 지연은 브라우저마다 21ms (IE9)에서 1ms (Opera)까지 많이 다릅니다.
- 1. AJAX 호출에 대한 콜백으로 객체 메소드 사용
- 2. setTimeout() 및 .call() 사용
- 3. htmlfile 윈도우의 원래의 setTimeout 호출에 '권한이 거부'
- 4. Ajax 호출에 div를로드하십시오.
- 5. jQuery ajax 호출에 실패했습니다
- 6. Ajax 호출에 문제가 있습니까?
- 7. ajax 콜백 함수에서 setTimeout 피하기
- 8. ajax div를 새로 고침하기위한 settimeout
- 9. Coffeescript에서 setTimeout() 사용 방법
- 10. jquery에서 setTimeout() 사용
- 11. setTimeout 이벤트에 live() 사용
- 12. Ajax 호출에 대한 보안 구현
- 13. Jquery AJAX 호출에 인증이 필요합니다.
- 14. url에서 history.js의 ajax 호출에 이르기까지
- 15. 특정 ajax 호출에 jquery ajaxComplete
- 16. AJAX 호출에 대한 JQuery로드 함수
- 17. ajax 호출에 텍스트 필드를 기입하십시오.
- 18. 동기식 AJAX 호출에 적합한 상황입니까?
- 19. AJAX 호출에 대해 ID를 암호화해야합니까?
- 20. jQuery AJAX 호출에 지연 추가
- 21. AJAX .get 호출에 변수 할당하기
- 22. AJAX 로그인 호출에 문제가 있습니다.
- 23. null json이 Ajax 호출에 반환되었습니다.
- 24. rails3 특정 Ajax 호출에 대한 회 전자 사용 안 함
- 25. 메서드 호출에 type() 사용
- 26. 간격이 1보다 작은 setTimeout 사용
- 27. '.'을 $ .ajax 호출에 대한 컨텍스트로 전달하는 방법
- 28. setTimeout 메서드가 ajax 함수와 작동하지 않습니다.
- 29. jQuery setTimeout 또는 지연 ajax 회 전자
- 30. Deferred with AJAX 사용
아무런 문제가 없지만 아약스 및 백엔드가 90 밀리 초 이내에 답변을 보낼 수 있는지 확인하십시오. –
어떻게 확인할 수 있습니까? –
firebug firefox를 사용하면 응답 시간과 내용이 표시됩니다 ... yslow firefox addon을 사용하여 응답 지연의 원인을 확인하십시오. –