2025-01-15 TIL
작동 오류 발견
일주일 동안 작동이 안 되던 원인을 드디어 알게 되었다. 나중에도 그것과 같은 문제가 발생할 수 있으니 적어보도록 하겠다.
export const Init = ({socket, id, payload}) => {
const protos = getProtoMessages();
const packet = protos.init.InitialPayload;
const newbuff = Buffer.from(payload);
const decodedpacket = packet.decode(newbuff);
const playerId = decodedpacket.playerId;
console.log(decodedpacket);
addUser(playerId, socket);
//console.log(getUserById(id));
//----------------------------
//response를 어떻게 할 것인가
const response = protos.response.Response;
const message = response.create({handlerId : 0, responseCode : 0, timestamp : 0, data : "string"});
const messageBuffer = response.encode(message).finish();
const lengthBuffer = Buffer.alloc(config.packet.totalLength);
lengthBuffer.writeUInt32BE(config.packet.totalLength + config.packet.typeLength + messageBuffer.length,0);
const typeBuffer = Buffer.alloc(config.packet.typeLength);
typeBuffer.writeUInt8(1,0);
const responsePacket = Buffer.concat([lengthBuffer, typeBuffer, messageBuffer]);
socket.write(responsePacket);
}
- 처음 데이터를 받을 때 socket, id, payload 등을 받는 방식이 각각의 원소로 받기로 했는지, 괄호를 씌웠는지를 잘 확인하자.
- 직렬화를 할 때 proto 파일 내부의 순서와 데이터 타입을 잘 확인해 보도록 하자.
- 데이터를 보낼 때 bytes 형태의 데이터는 json을 보내면 데이터를 제대로 인식하지 못한다. 일단 string 형태로 보낼 수 있으면 그렇게 하는 걸 해보도록 하자.
남은 할 일
일단 최대의 고비는 넘겼으니 이제 이동 동기화 등을 하도록 하자.