180bpm

웹소켓 이벤트 관련 요상한 버그 본문

카테고리 없음

웹소켓 이벤트 관련 요상한 버그

powdersnow 2024. 4. 9. 16:29

env : unity 2021.3.32 f1, win10

 

웹소켓 서버에서 넘어온 메시지를 로그로 남길때 포맷팅하려고 별도의 함수로 만들었는데 recv 이벤트 함수에서 변수 제외한 인스턴스나 함수에 접근하려면 로그가 아예 찍히지 않는 요상한 이슈가 있다.

private void OnWebSocketMessage(object sender, MessageEventArgs e)
{
    Debug.Log(this); // 안됨
}

 

 

알 수 없는  이유로 발목 잡혔는데, 구분은 필요한 상황이라 어찌해야 하다가 주니어 멤버와 함께 코드리뷰를 진행했다.

모르는 사람과 코드리뷰를 진행하면 문제점을 찾는다는 이론이 있었는데.. 이름이 기억나지 않네

여튼, 주니어가 리뷰해도 문제 없는 너무나 단순한 코드....긴 한데, "this에 접근을 못하는게 아닐까요?" 라는 피드백을 받고 고 보니 정말 그래서 예전에 AOS 액티비티에서 값 넘겨줄때 썼던 꼼수를 써보니 잘 됨.

 private void OnWebSocketMessage(object sender, MessageEventArgs e)
{
    recv = e.Data;
}
string recv = "";
private void Update()
{
    if(string.IsNullOrEmpty(recv)) return;
    Debug.Log(this.name + "|" + "WebSocket Received :" + recv);
    recv = "";
}

 

OnClose 받으면 재접속 시도하는 기능도 있었는데 마찬가지로 잘 안되었음.. 이거도 같은 방식으로 우회 처리

 

 

근데 안되는 원인을 모르겠다.

누가 이유를 알려주세요!

Comments