클라이언트
socket.emit("update item", "1", { name: "updated" }, (response) => {
console.log(response.status); // ok
});
서버
socket.on("update item", (arg1, arg2, callback) => {
console.log(arg1); // 1
console.log(arg2); // { name: "updated" }
setTimeout(() => {
callback({
status: "ok",
});
}, 1000);
});
우선, socket.emit에서 callback을 넘겨줄 수 있다는 점이 특이했다.
이걸 보고, 당연하게도 클라이언트에서 arg로 콜백함수를 보내면 서버에서 받아서 서버에서 실행하는 것이라고 생각하였다.
그렇기에 터미널만 보고 있었는데 아무것도 찍히는 것이 없었다.
세 시간 동안 이것저것 다해봤지만 이유를 모르겠었다.
근데 계속 서버에서 출력 되어야 할 것들이 클라이언트에서 출력 되는 게 좀 이상했다.
처음에는 함수가 즉시 실행 되는 건가 싶어서 내가 여태 뭔가 잘못 알고 있었나 싶었다.
그래서 또 ,, 이것저것 해보았다.
하지만
정답은, 프론트에서 보내면 서버에서 호출하고 프론트에서 실행되는 것이었다.
반대로, 서버에서 보내면 프론트에서 호출하고 서버에서 실행되는 것이었다.
참 신기한 기능인데 내 관점에서만 생각하다가 삽질했다...
'Node.js' 카테고리의 다른 글
Nodemon 노드몬 포트 충돌 에러 발생 시 해결 (0) | 2023.07.26 |
---|---|
WebRTC 초기 Flow 도식화 (0) | 2023.06.23 |
dependencies와 devDependencies의 차이 (0) | 2023.06.15 |