내 클라이언트의 업데이트 폴링을 피하기 위해 App Engine Channel API을 사용하려고합니다. 문제는 소켓을 시작한 후 Chrome 콘솔에서 XHR 패킷이 계속 전송된다는 것입니다. 그들 모두는 다음과 같이 말합니다 :왜 앱 엔진 채널 API를 사용할 때 XHR 폴링이 많이 발생합니까?
XHR finished loading: GET "http://localhost:8080/_ah/channel/devcommand=poll&channel=xxxOMITTEDxxx-channel-yyyOMITTEDyyy-zzzOMITTEDzzz-1&client=1". jsapi:5406goog.net.XhrIo.send jsapi:5406goog.net.XhrIo.send jsapi:5352goog.appengine.DevSocket.poll_
서버가 메시지를 보내려고 시도 할 때까지 어떤 XHR 메시지도 기대하지 않습니다. 나는 Python dev_appserver를 사용하고있다.
아마 내가 자바 스크립트에서 뭔가 잘못하고 있습니다. 서버에서 토큰을 성공적으로 요청하고 있습니다. 내 클라이언트가 토큰을 수신 할 때,이 같은 소켓을 시작합니다
function listen_to_channel(msg) {
console.log('--- server response to channel request: ' + JSON.stringify(msg));
// open a channel socket
var channel = new goog.appengine.Channel(msg.token);
var socket = channel.open();
socket.onopen = function(){ console.log('socket.onopen')};
socket.onmessage = function(msg){ console.log('socket.onmessage: ' + msg.data)};
socket.onerror = function(err){ console.log('socket.onerror: ' + err.description + ', ' + err.code)};
socket.onclose = function(){ console.log('socket.onclose')};
}
내가 jQuery를에서 해당 코드를 실행,과 같이 :
$(document).ready(function() {
$.get('/admin/channel', {clientID:1}, listen_to_channel, 'json')
});
내가 지금처럼 종속성을 사용하고 있습니다 :
<head>
<script type="text/javascript" src="/_ah/channel/jsapi"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="javascript/admin.js"></script>
</head>
예제 코드는 소켓이 HTML DOM의 태그 내에 만들어 져야한다는 것을 분명히합니다. 이것이 내 문제의 원인인가? 그렇다면 태그 내에 소켓을 만드는 방법이 어떻게 다릅니 까?
아! 감사. 레퍼런스가 있으십니까? – cyrf
다음 코드를 볼 수 있습니다. https://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/tools/devappserver2/channel.py – Greg