질문 Q #10769
APSN 개발중에 SSL: Broken pipe 문제가 발생됩니다.
조주상 2013-08-30 14:29:01
주소  https://github.com/antongorodezkiy/codeigniter-apns
위 주소의 라이브러리를 사용해 애플 푸쉬서버를 구축중에 있습니다.
아래 라이브러리로 1개의 단말에  push 메세지를 보내면 이상없이 작동하는데


약6만개의 디바이스에 푸쉬 메세지를 보내려고 하니 약 50개 정도 푸쉬를 보내는 중 SSL: Broken pipe 에러가 발생됩니다.

에러가 나는 부분은
   $result = fwrite($this->pushStream, $msg, strlen($msg));

요 부분에서 에러가 나온다고 하는데 

정확한 에러메세지는 

A PHP Error was encountered

Severity: Warning

Message: fwrite() [function.fwrite]: SSL: Broken pipe

Filename: libraries/apn.php

Line Number: 206





이렇습니다.

개발 소스는 센드메세지 부분만 토큰 어레이 만큼 돌리도록 개발하였습니다.

그러니까 for문을 약 6만번 정도 도는 것입니다.


foreach ($array_ios as $value) {
    $send_result = $this->apn->sendMessage($value, $this->input->post('send_message'), /*badge*/ 2, /*sound*/ 'default'  );
}
 
기존에안드로이드 개발만 하다가 CI를 한지 한달정도 되었는데 가장 큰 벽에 부딫힌거 같습니다.ㅠㅠ



혹시 이걸로 구현하신분이나 도움주실수 있으신분 계시면 감사하겠습니다.


답변 4
#1 변종원(웅파) 2013-08-30 15:01:18
#2 조주상 2013-08-30 17:04:10
 답변감사합니다.
변종원님이 말씀하신대로 유효하지 않은 토큰으로 생각하고 리절트가 에러로 떨어지게 되면 다시 초기화를 하고 진행하니 문제있는 토크을 제외하곤 잘 보내지는 것 같습니다..

근데 한가지더 문제가 발생하였습니다.

A PHP Error was encountered

Severity: Warning

Message: stream_socket_client() [function.stream-socket-client]: SSL: connection timeout

Filename: libraries/apn.php

Line Number: 81

A PHP Error was encountered

Severity: Warning

Message: stream_socket_client() [function.stream-socket-client]: Failed to enable crypto

Filename: libraries/apn.php

Line Number: 81

A PHP Error was encountered

Severity: Warning

Message: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error)

Filename: libraries/apn.php

Line Number: 81


타임아웃이 떨어지는 것 같은데요

혹시 이것에 대해도 알려주실수 없을까요? ㅠㅠ  검색해보면 대부분 pem 파일을 새로 받으라고 하는데 그것 아닌것 같습니다.


현재는 약 50개 정도 보내면 

$this->apn->disconnectPush();
           $this->apn->payloadMethod = 'enhance'; // you can turn on this method for debuggin purpose
   $this->apn->connectToPush();  
   $this->apn->setData(array( 'someKey' => true ));

이소스를 타면서 연결을 끊고 재연결을 해서 하도록 해놓았는데 위와 같은 타임아웃 문제가 발생되네요 ㅠㅠ

#3 조주상 2013-08-30 20:55:13
 라이브러리 사용하지 않고 새로 만들어서 해결하였습니다.
#4 산들바람 2014-02-12 10:19:17
 같은 문제로 고생 중 입니다.  해결 방법은 따로 없는건가요?