728x90
나만무
트러블슈팅
socket.io를 유니티 클라이언트와 연결하지 못 하고 있었다.
- 처음에 app.listen을 사용해 서버를 열었다. 그러나 예제를 그대로 따라했음에도 유니티 클라이언트와 연결이 불가능했다.
- 클라이언트의 문제 일 것이라고 생각을 하고, 여러 코드를 다 사용해봤지만 연결이 계속 되지 않았다. 그래서 서버와 클라이언트 둘 다 다른 사람의 깃을 복사해서 사용해보니 되는 것을 확인해서 하나씩 바꿔서 문제를 찾아보기 시작했다.
- app.listen()의 경우 Express 애플리케이션을 시작하는 메서드로서, HTTP 서버를 직접 생성하고 실행한다. 하지만 Socket.IO를 사용할 때는 http.createServer()로 생성한 HTTP 서버 인스턴스를 사용하여 Socket.IO 서버를 초기화 했어야 했다.
- 따라서 app.listen으로 열고 있던 서버를 server.listen으로 변경해주었다.
유니티에서 보낸 json 형식의 데이터를 읽지 못했다.
- 클라이언트에서 확인을 했는데, 제대로 들어가고 있는 것을 확인할 수 있었다.
- 서버에서 console.log 로 확인한 결과 {} 이런식으로 나오거나 undefined로 결과가 나오고 있었다.
- json 형식으로 보낸 데이터를 바로 json으로 이용할 수 있을 것이라고 생각했는데, 그게 아니라 다시 JSON.Parse를 해줘야 했다.
- JSON.parse()를 사용해줘서 해결했다.
- 클라이언트 - 서버 - 데이터베이스의
로그인&회원가입&매칭 기능 구현
- 로그인 & 회원가입의 경우 어렵지 않게 구현했다.
- 매칭 구현에서 기능은 빠르게 구현했으나 socket.join이 실행되지 않았다
- socket.emit과는 다르게 join은 socket.io 라이브러리가 해당 .js에 선언이 되어야 사용할 수 있었다. 라이브러리를 추가하고 join을 사용해주었다.
- player.socket.join(firstRoomID,(err)⇒{ 와 같이 콜백함수를 사용했는데 콜백이 실행되지 않았다.
- 아래와 같이 콜백을 사용하지 않는 방향으로 변경해서 해결했다.
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 |