ws으로 이벤트를 받아서 처리하려고하는데
가끔가다가 이벤트를 못받아오는경우가 있습니다.
어떤원인이 있나요??
사용하시는 EN이나, 해당 접속하는데 사용하시는 code 공유해주시면 답변드리는데 도움될것같습니다.
일단 일정시간 이후부터 event를 못받아오는 경우는 timeout된 경우입니다.
timeout을 예방하기 위해서는 timeout보다 짧은 주기로 blocknumber 요청을 보내는 방법을 사용하시면됩니다.
해당 컨트랙트에서 이벤트가 발생할때마다 불러오고있습니다.
블록넘버로 요청을 보내는방법 자세하게 알려주실수있을까요?
기존 답변된 위 링크 참조해주세요.
약 50~55초에 한번꼴로
caver.rpc.klay.getBlockNumber 를 요청하시면됩니다.
저는 kas를 이용하지않고 EN 노드를운영하고있고 저희쪽 노드와의 연결로 통신을합니다.
EN 을 직접 운영하시는 것이고, 이벤트 구독중에 간헐적으로 놓치는 이벤트가 있다는 말씀이실까요?
이 경우 EN의 websocket 관련 환경설정 이벤트 구독 구현하신 코드 및 사례를 구체적으로 공유해주셔야 검토가능할 문제같습니다.
contract.events.allEvents() 를 통하여 이벤트를 받아오고있습니다.
노드가 끊기지않고 정상 작동중인데 간헐적으로 트랜젝션은 실행됐는데 이벤트자체가 발생하고있지않은경우들이 있었습니다.
예를들면 allEvents에서 transfer 이벤트를 바라보고 이벤트가 발생시 디비에 넣어주는 작업을 시행중에 있다면
트랜젝션은 발생하였지만 해당 이벤트가 발생되지않아 디비업데이트가 되지않았습니다.
현재 운영하시는 EN 에서 간헐적으로 이벤트를 놓치고있다고 말씀하신 부분에 대해서 원인 파악에 필요한 정보가 하나도 없는상황이라, 이부분에 대해서 좀더 구체적으로 제공해주시기를 추천드립니다.
또한 가능하면 이벤트가 발생된 트잭, 발생되지 않은 트잭에 대한 transaction hash 및 이벤트 구독 로그 등을 기록하셔서 상황에 대한 증거자료과 재현 가능하도록 EN 버젼 및 환경설정 파일도 공유해주시면 아마 도움이 되지않을까 생각합니다.