2012-08-12 2 views
0

채널 API를 사용하여 Google App Engine을 사용하여 웹 애플리케이션을 만들고 있습니다. 이것은 Ajax와 비슷한 것을 시도한 첫 번째 시도이며 내 문제를 해결하기위한 표준 기술이 있다고 의심하지만 찾을 수 없었습니다.GAE 채널 api로 닫힌 채널을 정상적으로 처리하기

내 클라이언트 프로그램이 서버에 메시지를 게시합니다. 예를 들어 채널이 닫힌 경우와 같이 메시지를 전송할 수없는 경우 메시지는 어떻게됩니까? 클라이언트가 태블릿에 있고 사용자가 무선 네트워크 범위를 벗어나면 어떻게됩니까? 내 응용 프로그램의 경우 메시지가 다시 보내지는 것이 중요하지만이 작업을 수행하는 방법은 알 수 없습니다.

채널을 닫을 때 서버에서 새 토큰을 요청해야한다는 것을 알고 있지만 내 클라이언트가 해당 토큰을 가져 와서 페이지를 다시로드하지 않고 연결을 열 수 있다는 것을 알지 못합니다. 따라서 데이터가 손실됩니다. . here 데모에서 클라이언트는 토큰을 알아야합니다.

var channel = new goog.appengine.Channel({{token}}); 

그러나 나는 클라이언트가 토큰을 알 필요가 없다는 것을 다른 곳에서 읽었습니다. - 그게 어떻게 효과가 있니?

또한 onerror 및 onclose 콜백 함수가 실패한 메시지를 표시하지 않는 것 같아서 다시 보내야하는 것을 어떻게 알 수 있습니까?

누군가 나를 올바른 방향으로 밀어 넣을 수 있다면 매우 감사 할 것입니다.

답변

0

"메시지가 다시 전송되는 것이 중요하다"면 브라우저 대신 기본 클라이언트를 고려해야합니다. 사용자가 범위를 벗어나 브라우저 창을 닫거나 다시로드하면 데이터가 손실됩니다.

  1. "나는 내 클라이언트가 그 토큰을 얻을 수있는 방법을 알고하고 페이지를 다시로드하지 않고 연결을 열 수 없습니다." AJAX to make a call to server을 사용하십시오. 그러면 페이지가 다시로드되지 않습니다.

  2. 클라이언트는 채널을 열려면 토큰이 필요합니다. 주위에.

  3. onclose은 소켓을 닫을 때 호출해야합니다. 클라이언트가 연결을 잃으면 소켓 시간 초과와 onclose이 호출되기까지 어느 정도 시간이 걸릴 수 있습니다.