호환성
Pusher 호환 실시간 백엔드
PushCaster는 회선에서 Pusher Channels 프로토콜 7 버전을 말합니다. 옮기는 일은 설정이지 다시 쓰는 일이 아니며, 이 페이지가 바뀌는 것들의 정확한 목록입니다.
애플리케이션을 다시 작성할 필요가 없습니다. 연결 설정만 바꾸면 됩니다. 애플리케이션마다 세 줄에서 여섯 줄. Laravel이라면 .env 만 바꾸면 끝입니다. drop-in도 zero-config도 아닙니다. 호스트는 설정해야 하고 자격 증명은 새것입니다.
그대로인 것
회선, 라이브러리, 인증 핸드셰이크
여기서 호환이란 닮았다는 뜻이 아니라 프로토콜 자체를 말합니다. 요청/응답 형식, 이벤트 의미, 인증 방식이 호환됩니다.
| 영역 | 바뀌지 않는 것 |
|---|---|
| 프로토콜 | 회선 위의 Pusher Channels 프로토콜 7 버전. |
| 클라이언트 라이브러리 | pusher-js, Laravel Echo, 공식 모바일 라이브러리. 모두 손대지 않고. |
| 서버 라이브러리 | pusher-php-server, pusher-http-node, 그리고 Python·Go·Ruby·Java 라이브러리. |
| 서명 | 호환되는 서명 및 정규화 방식. |
| 채널 종류 | public, private, presence, private-encrypted. 접두어도 같습니다. |
| 구독 인가 | POST /pusher/auth는 요청과 응답의 모양을 그대로 유지합니다. |
| 클라이언트 이벤트 | private과 presence 채널에서 구독자들 사이에, 전과 같이. |
| Webhook | 필드 이름도 헤더도 같습니다. channel_occupied, member_added, cache_miss를 포함합니다. |
테스트한 SDK 버전
아래 목록의 Pusher SDK 버전과 호환되며, 해당 SDK를 수정할 필요가 없습니다.
| SDK | 테스트한 버전 |
|---|---|
| pusher-js (browser) | 8.6.0 |
| pusher/pusher-php-server | 7.3.0 |
| pusher (Node.js) | 5.3.4 |
| pusher (Python) | 3.3.4 |
| pusher-http-go | v5.1.1 |
| pusher (Ruby) | 2.1.1 |
| laravel/framework (Echo) | ^13.0 |
바뀌는 것
호스트, 그리고 자격 증명
pusher-js는 wsHost를 주지 않으면 ws-<클러스터>.pusher.com을 그대로 박아 두고, 서버 라이브러리는 host를 주지 않으면 기본으로 api-<클러스터>.pusher.com으로 갑니다. 이 둘을 덮어쓰는 것이 이전의 전부입니다.
const pusher = new Pusher(APP_KEY, {- cluster: 'eu',+ wsHost: 'ws-eu1.pushcaster.io',+ wsPort: 443,+ forceTLS: true, })언어별 전체 변경
// before — talking to Pushernew Pusher(KEY, { cluster: 'eu' })// after — talking to PushCaster (the key & secret are new)new Pusher(KEY, { wsHost: 'ws-eu1.pushcaster.io', wsPort: 443, forceTLS: true,})호스트 설정은 빠뜨리기 쉽습니다. 기본값 그대로 두면 라이브러리는 Pusher의 서버와 이야기하고, 오류는 잘못된 목적지가 아니라 잘못된 key를 가리킵니다.
app id와 key, secret은 새것입니다. 기존 자격 증명은 옮겨지지 않습니다. 같은 자리에서 클러스터도 고르세요. 클러스터는 호스트의 일부입니다.
알려진 차이
같지 않은 세 가지
호환성 주장은 그 예외와 함께여야 쓸모가 있습니다. 이 세 가지는 설계 판단을 바꿀 수 있습니다.
클러스터는 하나, 페더레이션은 없음
클러스터는 지리적 힌트가 아니라 격리 경계입니다. 자체 노드와 NATS, Redis를 가지며 클러스터 간 전달은 없습니다. 애플리케이션은 정확히 하나의 클러스터에 속하므로, 서로 통신해야 하는 둘은 같은 클러스터에 있어야 합니다.
호스트는 클러스터 이름이 아닙니다
cluster: "eu" 만으로는 PushCaster에 도달하지 않습니다. 클라이언트에는 wsHost를, 서버 라이브러리에는 host를 지정합니다. 세 개의 옵션을 바꾸는 일이며, 모든 마이그레이션이 이 작업을 합니다.
통계 API 없음
Pusher의 대시보드 통계 엔드포인트에 해당하는 것은 여기 없습니다. 사용량은 저희 API에서, 운영 지표는 Prometheus에서 옵니다. 공식 서버 SDK 중 그 엔드포인트를 호출하는 것은 없으므로, 이는 애플리케이션이 아니라 도구에 영향을 줍니다.
이전
private과 presence 채널을 먼저 시험하세요
무언가 잘못되어 있어도 public 채널은 계속 통과합니다. 서버에 아무것도 묻지 않기 때문입니다. 오래된 호스트나 맞지 않는 secret은 private과 presence 구독에서만 드러납니다.
- 01애플리케이션을 만드세요고른 클러스터는 이제 설정할 모든 호스트의 일부입니다.
- 02호스트를 두 곳 모두에 설정하세요클라이언트에는 wsHost가, 서버에는 호스트가 필요합니다. 하나를 빠뜨리면 애플리케이션의 절반은 여전히 Pusher와 이야기합니다.
- 03자격 증명을 바꾸세요셋은 함께 바뀝니다. 새 key에 옛 secret을 섞으면 서명된 구독에서만 실패합니다. 대충 한 번 확인해서는 살아남는 이유가 그것입니다.
- 04private 채널을 subscribe하세요POST /pusher/auth가 실제로 동작하고, secret이 app id와 짝을 이룬다는 것이 확인됩니다.
- 05presence 채널에 들어가세요멤버 목록과 입장·퇴장 이벤트가 확인됩니다.
- 06서버에서 publish하세요publish 호스트와 서명이 끝에서 끝까지 확인됩니다.