Webhooks v1.2의 새로운 기능

"Username"은 이제 "NickName" 입니다.

이것은 잠재적인 문제의 소지가 될 수 있는 변경사항이며 Webhooks 1.2 로 업그레이드 할 때 적용되어야 하는 것 입니다!

이전에 나왔던 webhook 요청의 데이터 내의 Username 프로퍼티는 NickName 으로 이름이 변경 될 것 입니다.

이 변화는 모든 webhook 에 영향을 주게 됩니다.

  • Username 은 GameClose 를 제외한 모든 Webhook 에서 가장 최상위 레벨의 프로퍼티 입니다.
  • UsernameActorList 배열 요소의 프로퍼티 입니다.
    ActorList 는 직렬화된 룸 상태의 일부분 입니다.
    상태를 포함하고 있을 수 있는 Webhooks은 GameClose(Type="Save"), GameProperties 와 GameEvent 입니다.

AsyncJoin 옵션

Webhooks v1.0 에서 IsPersistent 설정으로 Photon 세션간에 룸 상태들을 저장할 수 있습니다.
재참가 오퍼레이션을 위한 것으로 클라이언트가 명시적으로 JoinMode 를 지정하도록 되어 있습니다.

Photon 어플리케이션은 친구들과 같이 게임을 더 쉽게 즐기기 위해 룸 생성 후 몇 시간이 지난 후에 게임에 참여하라는 초대 수용과 같이 비동기 오퍼레이션을 지원 합니다.

이런 이유로 Webhooks v1.2에 AsyncJoin 옵션이 도입 되었습니다.

IsPersistentAsyncJoin 두개 모두 사용하도록 설정되어 있으면 참여 오퍼레이션의 실패는 웹서비스로 포워드 됩니다.

두 개의 플래그가 조합되어 Photon 서버의 메모리에 없는 룸에 참여하는 모든 오퍼레이션은 GameCreate (Type="Load") webhook 를 트리거 할 것 입니다.

Webhooks v1.2의 기본 환경설정 템플리트에서는 AsyncJointrue 로 설정되어 있습니다.
이전 Webhooks v1.0 에서는 false 로 설정되어 있었습니다.

아래 테이블에서는 모든 클라이언트 오퍼레이션으로 Type="Load" 를 가진GameCreate webhook 을 트리거 할 수 있는 것을 보여 줍니다(룸이 Photon 서버 메모리에 없거나 로드 되어야 하는 곳에서 찾을 수 없는 경우).

클라이언트 오퍼레이션 ActorNr JoinMode v1.0 v1.2
OpJoinRoom 0 Default (Join)
OpJoinRoom != 0 RejoinOnly
OpJoinOrCreateRoom N/A CreateIfNotExists

Error 코드

디버깅을 더 쉽게 하기 위해서 이전 InternalServerError (-1) 가 새로운 오류 코드로 교체 되었습니다.
새로운 코드들은 모든 참여 관련 예외를 포함합니다.

  • JoinFailedPeerAlreadyJoined (32750):
    현재의 피어가 이미 join 을 호출 했고 룸에 참여 했다는 것을 나타냅니다.
  • JoinFailedFoundInactiveJoiner (32749):
    InactiveActors 의 목록이 요청된 ActorNr 또는 UserId 를 가진 액터를 포함하고 있다는 것을 나타냅니다.
  • JoinFailedWithRejoinerNotFound (32748):
    액터 목록(활성과 비활성)이 요청된 ActorNr 또는 UserId 를 가진 액터가 없다는 것을 나타냅니다.
  • JoinFailedFoundActiveJoiner (32746):
    ActiveActor 들의 목록에 요청된 ActorNr 또는 UserId 를 가진 액터가 존재 한다는 것을 나타냅니다.

WebFlags

이 플래그들은 선택적인 플래그로 Photon 클라이언트 SDK 의 OpRaiseEventOpSetProperties 메소드에서 사용됩니다.
GameEventGameProperties webhook에 영향을 줍니다.

아직까지 WebFlags는 모든 클라이언트 SDK에 포함되어 있지 않습니다. 이 기능이 필수이면 developer@photonengine.kr로 메일을 보내주시기 바랍니다.

HttpForward

이 webflag는 Webhooks 1.2 가 내부적으로 이전 OpRaiseEventOpSetProperties 메소드 내의 boolean 파라미터를 어떻게 동일한 이름으로 교체하는 것인가를 나타 냅니다.

이 플래그의 목적은 이러한 오퍼레이션을 웹서비스에 포워드 할것인지 여부를 결정 하는것 입니다.
아래에 설명한 다른 웹플래그들은 HttpForward (0x01)에 따라 달라지게 됩니다.
HttpForward 가 설정되어야만 사용할 수 있도록 고려 될 수 없습니다.

SendAuthCookie

Webhooks 에는 암호화된 객체 AuthCookie 를 웹서비스로 안전하게 전송할 수 있는 옵션을 제공 합니다.
관련된 webflag (SendAuthCookie (0x02)) 를 설정하여 수행 할 수 있습니다.

AuthCookie 는 커스텀 인증 프로바이더에 대한 인증 성공 후에 가져 올 수 있습니다.

상세한 내용은 커스텀 인증 문서 페이지로 이동하여 살펴 보세요.

SendSync

Webhooks 1.2에서 HTTP 쿼리가 동기 또는 비동기로 진행 될지를 선택 할 수 있습니다.
Webhooks 은 기본값으로는 비동기 방식으로 처리됩니다.
이제 SendSync (0x04) 를 통하여 webhook 플러그인을 블럭하여 다른 오퍼레이션을 처리하기 전에 응답을 기다리도록 할 수 있습니다.

SendState

이것은 잠재적인 문제의 소지가 될 수 있는 변경사항이며 Webhooks 1.2 로 업그레이드 할 때 적용되어야 하는 것 입니다!

Webhooks 1.0 에서 직렬화된 룸 상태는 자동적으로 모든 GameEventGameProperties webhooks로 State 아규먼트를 통해 전송 되었습니다.
이 사항은 대역폭을 낭비하며 더 지연이 되게 합니다.
포워드할 이벤트들이 많고, 자주 프로퍼티가 갱신되며 대량의 게임 상태가 있는 게임에서는 문제의 소지가 있습니다.

모든 개발자가 이런 webhook 에서 룸 상태에 접근할 필요는 없지만 기본 행위를 변경 할 수 있습니다.
Webhooks 1.2 에서 SendState (0x08) 플래그를 개발자가 변경할 수 있도록 도입된 이유이며 이 값을 변경하여 이벤트 또는 프로퍼티가 변경될 때 웹 서비스로 룸 상태의 전송여부를 선택할 수 있습니다.

나만의 HTTP 헤더 추가하기

Webhooks 1.2 에서는 커스텀 헤더를 설정하여 모든 webhook 의 HTTP 요청에 전송할 수 있습니다.
어플리케이션의 webhook 설정시에 JSON 형식으로 CustomHttpHeaders 키 값으로 헤더를 추가 하면 됩니다.
이 새로운 기능은 웹서비스의 HTTP 헤더로써 보안 API 키 제공과 같은 재미있는 것을 할 수 있을 것 입니다.

Back to top