Study/Project

나만무 슬레이어즈 12

에린_1 2024. 5. 9. 00:42
728x90

나만무

트러블슈팅

socket.io를 유니티 클라이언트와 연결하지 못 하고 있었다.

  1. 처음에 app.listen을 사용해 서버를 열었다. 그러나 예제를 그대로 따라했음에도 유니티 클라이언트와 연결이 불가능했다.
  2. 클라이언트의 문제 일 것이라고 생각을 하고, 여러 코드를 다 사용해봤지만 연결이 계속 되지 않았다. 그래서 서버와 클라이언트 둘 다 다른 사람의 깃을 복사해서 사용해보니 되는 것을 확인해서 하나씩 바꿔서 문제를 찾아보기 시작했다.
  3. app.listen()의 경우 Express 애플리케이션을 시작하는 메서드로서, HTTP 서버를 직접 생성하고 실행한다. 하지만 Socket.IO를 사용할 때는 http.createServer()로 생성한 HTTP 서버 인스턴스를 사용하여 Socket.IO 서버를 초기화 했어야 했다.
  4. 따라서 app.listen으로 열고 있던 서버를 server.listen으로 변경해주었다.

유니티에서 보낸 json 형식의 데이터를 읽지 못했다.

  1. 클라이언트에서 확인을 했는데, 제대로 들어가고 있는 것을 확인할 수 있었다.
  2. 서버에서 console.log 로 확인한 결과 {} 이런식으로 나오거나 undefined로 결과가 나오고 있었다.
  3. json 형식으로 보낸 데이터를 바로 json으로 이용할 수 있을 것이라고 생각했는데, 그게 아니라 다시 JSON.Parse를 해줘야 했다.
  4. JSON.parse()를 사용해줘서 해결했다.
  5. 클라이언트 - 서버 - 데이터베이스의

로그인&회원가입&매칭 기능 구현

  1. 로그인 & 회원가입의 경우 어렵지 않게 구현했다.
  2. 매칭 구현에서 기능은 빠르게 구현했으나 socket.join이 실행되지 않았다
    1. socket.emit과는 다르게 join은 socket.io 라이브러리가 해당 .js에 선언이 되어야 사용할 수 있었다. 라이브러리를 추가하고 join을 사용해주었다.
    2. player.socket.join(firstRoomID,(err)⇒{ 와 같이 콜백함수를 사용했는데 콜백이 실행되지 않았다.
    3. 아래와 같이 콜백을 사용하지 않는 방향으로 변경해서 해결했다.
player.socket.join(firstRoomID);

    player.socket.on('error', (err) => {
        player.socket.emit('enterRoomFail', 'Enter Room Fail!!');
        console.error('Enter Room Fail!! : ', err);
    });

    player.socket.emit('enterRoomSucc', 'Enter Room Succ!!');
    console.log('Enter Room Succ!!');
728x90

'Study > Project' 카테고리의 다른 글

나만무 슬레이어즈 14  (0) 2024.05.12
나만무 슬레이어즈 13  (0) 2024.05.10
나만무 슬레이어즈 11  (0) 2024.05.08
나만무 슬레이어즈 10  (0) 2024.05.08
나만무 슬레이어즈 9  (0) 2024.05.04