카우치베이스 모바일

동기화 게이트웨이 웹훅

방금 Couchbase Mobile 1.1을 출시했으며 이 새 버전에는 다음과 같은 많은 기능이 추가되었습니다. 새로운 기능. 이 블로그 게시물에서는 동기화 게이트웨이 웹훅에 대해 살펴보고 이를 사용하는 몇 가지 구체적인 예를 생각해 보겠습니다.

웹훅

1.1 릴리스 이전에는 동기화 게이트웨이에 플러그인 형태의 사용자 지정 로직을 추가하는 유일한 방법은 변경 피드에서 수신하는 것이었습니다. 이 방법은 여전히 작동하지만 설정하기가 가장 쉽지는 않습니다. 웹훅을 사용하면 필터 기능과 이벤트를 게시할 URL을 제공하기만 하면 됩니다. 그런 다음 백엔드 언어 (NodeJS, Java, Go, Ruby...) 중 원하는 것을 선택합니다.

웹훅은 다양한 사용 사례에 사용될 수 있습니다:

  • 메시징사용자에게 중요한 이벤트를 알려주는 타겟 알림.
  • 일정 예약웹 워커에서 실행될 수 있는 대규모 작업을 시작합니다.
  • 사용자 지정 로직웹훅을 사용하여 문서에서 추가 작업을 수행하여 동기화 기능 기능을 확장합니다.

다음 섹션에서는 관심 주제와 일치하는 새 글이 게시될 때 사용자에게 알려주는 뉴스 애플리케이션의 푸시 알림 기능을 구축하는 방법에 대해 집중적으로 알아봅니다. 이 튜토리얼은 예제별 카우치베이스 리포지토리에 저장합니다.

아키텍처 고려 사항

푸시 알림은 사용자에게 새 콘텐츠를 사용할 수 있음을 알려주는 시각적 단서이지만 애플리케이션 자체가 서버에서 새 글을 가져오는 용도로도 사용할 수 있습니다:

새 글을 확인하기 위해 동기화 게이트웨이를 통한 지속적인 풀 복제 대신 웹 푸시 API를 사용하는 이유는 브라우저가 닫혀 있어도 작동할 수 있기 때문입니다. 브라우저와 웹 페이지가 열려 있는 동안에만 유지되는 웹 소켓이나 긴 폴링과 비교하면 훨씬 편리합니다.

시나리오

푸시 알림을 보내는 데는 여러 가지 시나리오가 있습니다:

  • 그룹 메시징이 개념은 최대 20개의 디바이스에 동시에 알림을 보내기 위해 GCM에 도입되었습니다. 한 사용자에게 속한 모든 디바이스에 알림을 보내는 데 매우 적합합니다.
  • 위아래로사용자가 문서를 업데이트하면 다른 사용자에게 푸시 알림을 통해 알림을 보내야 합니다.

데이터 모델

가장 작은 문서인 사용자 디바이스의 등록 토큰과 관심 주제가 담긴 프로필 문서부터 시작해 보겠습니다:

그리고 문서 문서에는 다음과 같은 속성이 있을 수 있습니다:

그룹 메시징

사용자가 현재 부분 유료화 계정에 가입한 상태에서 제한된 시간 동안 프리미엄 요금제에 액세스하기 위해 초대 코드를 입력하는 시나리오를 상상해 보세요. 추가 콘텐츠를 가져오기 위해 사용자의 모든 디바이스에 알림을 보내면 좋을 것입니다.

요약: 다른 디바이스의 잠금을 해제할 수 있는 초대 코드가 있는 부분 유료화 사용자에게 일회성 알림을 보냅니다.

다운로드 1.1 릴리스 동기화 게이트웨이의 바이너리를 찾습니다. 동기화 게이트웨이 바이너리는 동기화 게이트웨이의 bin 폴더에 있는 구성 파일의 예와 예제 폴더로 이동합니다. 폴더를 복사합니다. exampleconfig.json 파일을 프로젝트의 루트에 추가합니다:

구성 파일에 세 명의 사용자를 추가합니다:

에서 다음 속성을 가진 웹 훅을 추가합니다. db 객체입니다:

동기화 게이트웨이를 시작합니다:

새 파일 만들기 main.go 를 사용하여 웹훅을 처리합니다:

Go 서버를 시작합니다:

curl을 사용하여 다음 주소로 POST 요청을 합니다. :4984/db/bulk_doc 을 클릭해 3개의 프로필 문서를 동시에 저장할 수 있습니다:

참고: 명령줄의 공간을 절약하기 위해 -데이터 인수는 요청 본문이 profiles.json.

Ali의 프로필 문서만 웹훅 엔드포인트에 게시되는 것을 확인할 수 있습니다:

다음 섹션에서는 관심사와 일치하는 새 글이 게시될 때 모든 사용자에게 알림을 보내는 두 번째 웹 훅을 구성합니다.

위아래로

다음과 같은 유형의 문서만 필터링하는 다른 웹훅 항목을 추가합니다. 기사:

Go 서버에 다른 핸들러를 추가합니다:

문서 문서를 추가하여 웹훅이 예상대로 작동하는지 확인합니다:

참고: 내용 articles.json 찾을 수 있습니다. 여기.

이 경우에는 어떤 사용자 집합에 알릴지 파악하기 위해 조금 더 많은 작업을 해야 합니다. 이는 보기를 사용하여 프로필 문서를 색인하고 토픽을 키로, 등록 ID를 토픽 배열의 모든 토픽에 대한 값으로 내보내는 데 좋은 사용 사례입니다.

보기를 등록하려면 동기화 게이트웨이 PUT을 사용할 수 있습니다. /_design/ddocname 엔드포인트를 요청 본문에 뷰 정의와 함께 전달합니다:

참고: 내용 view.json 찾을 수 있습니다. 여기.

위에 게시한 문서의 토픽에 디자인이 있고 이 토픽을 구독한 유일한 사용자가 Adam이라는 점에 주목하세요. 따라서 "design" 키를 사용하여 해당 보기를 쿼리하면 토픽을 키로, 디바이스 토큰을 값으로 사용하여 하나의 (키, 값) 쌍만 반환되어야 합니다:

이제 다음에서 핸들러를 편집할 수 있습니다. main.go 를 쿼리하여 사용자_토픽 보기를 사용하여 글의 주제가 핵심이 되도록 합니다:

실행 bulk_doc 다시 요청하면 로그에 사용할 디바이스 토큰 목록이 표시됩니다:

결론

이 튜토리얼에서는 GCM 푸시 알림 시나리오에서 웹훅을 사용하는 방법을 배웠고, 웹훅 타임™에서 추가 정보에 액세스하기 위해 Couchbase 서버 보기를 사용했습니다.)

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 제임스 노센티니

제임스 노센티니는 카우치베이스 모바일의 문서를 담당하는 테크니컬 라이터입니다. 이전에는 개발자 지원 담당자로 일했으며 그 전에는 HouseTrip의 프론트엔드 개발자로 일했습니다. 또한 여가 시간에는 raywenderlich.com에 안드로이드 튜토리얼을 작성하는 것을 즐깁니다.

댓글 하나

  1. 세바스찬 벤지안 올슨 7월 9, 2015에서 4:55 오후

    좋은 튜토리얼입니다. 이제 GCM/APNS 코드를 업데이트할 때입니다.

  2. 안녕하세요,

    좋은 문서에 감사드립니다.

    첨부 파일의 수정 이력을 만들려고 하는데 웹훅이나 플러그인 구현을 통해 첨부 파일을 가져올 수 있는 방법이 있나요?

    감사합니다,
    Satinder

  3. 안녕하세요 튜토리얼에 감사드립니다. 삭제를 처리하는 방법을 알고 싶습니다. 동기화 게이트웨이는 id, rev 및 삭제 된 속성 만 제공하므로.
    하나의 버킷에 여러 문서 유형이 있는데 특정 유형 하나만 동기화(예: 삭제 포함)하고 싶습니다.

    1. 제임스 노센티니 9월 16, 2016에서 10:07 오전

      동기화 기능에서 이 작업을 수행해야 하는 것 같습니다. https://developer.couchbase.com.... 사용 사례에 대해 좀 더 자세히 알아보려면 포럼에서 자유롭게 질문해 주세요. https://forums.couchbase.com/c...

  4. [...] 새로운 통합 메커니즘인 웹후크는 변경 알림을 제공하므로 Couchbase Mobile을 비즈니스 앱, 타사 서비스 등과 쉽게 통합할 수 있습니다. 자세한 내용은 개발자 애드보커티브 James Nocentini의 블로그 [...]에서 확인할 수 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.