4

아래 코드는 Google의 nodejs 클라이언트 버전 0.7here을 사용하여 Google 웹 로그 분석보고 API를 호출합니다. 일부 실행에서는 항상 socket hang up 오류가 반환되지만 항상 그렇지는 않습니다. Google 서버가 끝날 때 오류가 발생합니까? 디버깅하기 쉬운 방법이 있습니까? BTW 나는 속도 제한으로 인해 발생하는지 확실하지 않은 여러 통화를 연속적으로하고 있습니다.노드 클라이언트를 통해 Google API를 호출 할 때 "소켓 끊기"오류가 발생했습니다.

gapi = require "googleapis" 
authClient = new gapi.auth.JWT(
    config.ga.clientEmail, 
    config.ga.privateKeyPath, 
    null, 
    [config.ga.scopeUri] 
) 

authPromise = new Promise (resolve, reject) -> 
    authClient.authorize (err, token) -> 
     resolve token 
    return 
    return 

authPromise.then -> 
    gapi.discover('analytics', 'v3') 
    .withAuthClient(authClient) 
    .execute (err, client) -> 
     ... 

답변

1

오류가 성공적으로 실행 한 후 클라이언트를받은 후 표면 : ​​ 라이언 Seys의 API 클라이언트에 대한 기여는, .discover 한 번 호출해야하고 결과 client를 다시해야한다고 here을 제안 client.analytics.data.ga.get(queryObj).execute (err, result) -> ....

. 나는 .discover을 연속적으로 수백 번 호출하여 새로운 client을 만들어 냈다. 서버는 아마 그것을 좋아하지 않았다. client을 저장하고 재사용함으로써 문제가 해결되었습니다. 번영을위한 작업 코드 :

gapi = require "googleapis" 
authClient = new gapi.auth.JWT(
    config.ga.clientEmail, 
    config.ga.privateKeyPath, 
    null, 
    [config.ga.scopeUri] 
) 

authPromise = new Promise (resolve, reject) -> 
    authClient.authorize (err, token) -> 
    gapi.discover('analytics', 'v3').withAuthClient(authClient).execute (err, client) -> 
     resolve client 
     return 
    return 
    return 

authPromise.then (client) -> 
    client.analytics.data.ga.get(queryObj).execute (err, result) ->