카테고리 없음

TIL2024-12-22

foreiner852 2024. 12. 23. 08:19

디노 런 개인 프로잭트 트러블 슈팅

 

기본 과제에서 장애물과 아이템등을 모든 클라이언트로 브로드캐스팅 하는 과정에서 문제가 발생했다.

 

socket.js에서 변수 변경 및 데이터 리셋을 시도했다.

 

index.js에서 대부분의 변수를 export하고 get / set 함수들을 만들어서 해결을 하려고 했던것이 문제였던것 같다.

 

에러가 없어도 데이터가 제대로 들어오지 않았다.

아마도 export를 하는 과정에서 오타가 있거나 계산식을 잘못 상용한것 같은데 확실하지 않다.

 

그래서 내용을 index.js로 옮겼다.

 

변경후 socket.js 내용


socket.on('data', (data) => {
  console.log('서버로부터 수신된 데이터:', data.data.toString());
  setDataFromServer(data);
});

index.js

export function setDataFromServer(data) {
  console.log(data);
  if (data.type == 'startFlag' && +data.data >= 0) {
    score.setStage(data.data);
    waitingToStart = false;
  } else if (data.type == 'readytime') {
    waitingtime = data.data;
    itemController.reset();
    cactiController.reset();
    score.reset();
    gameover = false;
    if (waitingtime < 10000) waitingToStart = true;
  } else if (data.type == 'itemtime') {
    console.log(data.data);
    itemController.makeOne(data.data, data.height);
  } else if (data.type == 'cactustime') {
    cactiController.makeOne(data.height);
  } else if (data.type == 'otherPlayers') {
    otherPlayers.addplayer(data);
  }
}

 

type으로 내용을 더 명확하게 구별해 주는 내용도 추가했다.(초기에는 데이터 구조만으로 구별을 시도했다.)

전송하는 데이터를 어떻게든 줄이려다가 에러를 너무 많이 만들어서 시간을 많이 낭비했다.

 

추가) 트러블 슈팅이 아닌 그냥 트러블

dgram을 활용해서 UDP 통신을 시도했는데 연결이 되지 않았다.

시간이 부족해 그냥 TCP통신에서 전부 처리하기로 했다.