Webhooks v1.2의 새로운 기능
"Username"은 이제 "NickName" 입니다.
이것은 잠재적인 문제의 소지가 될 수 있는 변경사항이며 Webhooks 1.2 로 업그레이드 할 때 적용되어야 하는 것 입니다!
이전에 나왔던 webhook 요청의 데이터 내의 Username
프로퍼티는 NickName
으로 이름이 변경 될 것 입니다.
이 변화는 모든 webhook 에 영향을 주게 됩니다.
Username
은 GameClose 를 제외한 모든 Webhook 에서 가장 최상위 레벨의 프로퍼티 입니다.Username
은ActorList
배열 요소의 프로퍼티 입니다.
ActorList
는 직렬화된 룸 상태의 일부분 입니다.
상태를 포함하고 있을 수 있는 Webhooks은 GameClose(Type="Save"), GameProperties 와 GameEvent 입니다.
AsyncJoin 옵션
Webhooks v1.0 에서 IsPersistent
설정으로 Photon 세션간에 룸 상태들을 저장할 수 있습니다.
재참가 오퍼레이션을 위한 것으로 클라이언트가 명시적으로 JoinMode
를 지정하도록 되어 있습니다.
Photon 어플리케이션은 친구들과 같이 게임을 더 쉽게 즐기기 위해 룸 생성 후 몇 시간이 지난 후에 게임에 참여하라는 초대 수용과 같이 비동기 오퍼레이션을 지원 합니다.
이런 이유로 Webhooks v1.2에 AsyncJoin
옵션이 도입 되었습니다.
IsPersistent
와 AsyncJoin
두개 모두 사용하도록 설정되어 있으면 참여 오퍼레이션의 실패는 웹서비스로 포워드 됩니다.
두 개의 플래그가 조합되어 Photon 서버의 메모리에 없는 룸에 참여하는 모든 오퍼레이션은 GameCreate
(Type="Load"
) webhook 를 트리거 할 것 입니다.
Webhooks v1.2의 기본 환경설정 템플리트에서는 AsyncJoin
가 true
로 설정되어 있습니다.
이전 Webhooks v1.0 에서는 false
로 설정되어 있었습니다.
아래 테이블에서는 모든 클라이언트 오퍼레이션으로 Type="Load"
를 가진GameCreate
webhook 을 트리거 할 수 있는 것을 보여 줍니다(룸이 Photon 서버 메모리에 없거나 로드 되어야 하는 곳에서 찾을 수 없는 경우).
클라이언트 오퍼레이션 | ActorNr | JoinMode | v1.0 | v1.2 |
---|---|---|---|---|
OpJoinRoom |
0 | Default (Join) | ||
OpJoinRoom |
!= 0 | RejoinOnly | ||
OpJoin |
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 의 OpRaiseEvent
와 OpSetProperties
메소드에서 사용됩니다.
GameEvent
와 GameProperties
webhook에 영향을 줍니다.
HttpForward
이 webflag는 Webhooks 1.2 가 내부적으로 이전 OpRaiseEvent
와 OpSetProperties
메소드 내의 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 에서 직렬화된 룸 상태는 자동적으로 모든 GameEvent 와 GameProperties webhooks로 State
아규먼트를 통해 전송 되었습니다.
이 사항은 대역폭을 낭비하며 더 지연이 되게 합니다.
포워드할 이벤트들이 많고, 자주 프로퍼티가 갱신되며 대량의 게임 상태가 있는 게임에서는 문제의 소지가 있습니다.
모든 개발자가 이런 webhook 에서 룸 상태에 접근할 필요는 없지만 기본 행위를 변경 할 수 있습니다.
Webhooks 1.2 에서 SendState (0x08)
플래그를 개발자가 변경할 수 있도록 도입된 이유이며 이 값을 변경하여 이벤트 또는 프로퍼티가 변경될 때 웹 서비스로 룸 상태의 전송여부를 선택할 수 있습니다.
나만의 HTTP 헤더 추가하기
Webhooks 1.2 에서는 커스텀 헤더를 설정하여 모든 webhook 의 HTTP 요청에 전송할 수 있습니다.
어플리케이션의 webhook 설정시에 JSON 형식으로 CustomHttpHeaders
키 값으로 헤더를 추가 하면 됩니다.
이 새로운 기능은 웹서비스의 HTTP 헤더로써 보안 API 키 제공과 같은 재미있는 것을 할 수 있을 것 입니다.