You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
✂️기능 별 socket.js 만들어서 socket 로직 분리 후 서버 테스트 시 연결이 안됨.
기존에 socket.js 의 내용을 기능별로 쪼개서 각 파일별로 해당하는 기능만을 작성할 수 있도록 파일을 나눠봤습니다.
// ../src/socket.jsconstsocketIo=require('socket.io');consthttp=require('./app');constio=socketIo(http);io.on('connection',(socket)=>{console.log('socket.js connected',socket.id)socket.on('test1',(msg)=>{console.log(`../src/socket.js receive -> ${msg} to ${socket.id}`)})})module.exports=io;
// ../src/game/game-socket.jsconstgame=require('../socket');constGameProvider=require('./game-provider');game.on('connection',(socket)=>{console.log('game-socket connected',socket.id)constgameProvider=newGameProvider();// 게임 플레이 종료 및 스파이 투표 시작.socket.on('test2',(msg)=>{console.log(`../src/game/game-socket.js receive -> ${msg} to ${socket.id}`)})})
// ../src/rooms/room-socket.jsconstroom=require('../socket')room.on('connection',(socket)=>{console.log('room-socket connected',socket.id)socket.on('test3',(msg)=>{console.log(`../src/rooms/room-socket.js receive -> ${msg} to ${socket.id}`)})})
이런 식으로 하나의 socket.id를 여러 모듈화한 소켓 파일에서 바라보길 바랬는데 실제 터미널 로그를 보면
socket.js 에서만 console.log가 실행되고 나머지 파일은 거치질 않습니다.
🔍조치 사항
프로젝트 최상단에 server.js에서 처음 socket.js를 require 해주듯이, game-socket.js와 room-socket.js를 require 해주면
하나의 socket이 여러 파일에서 connection되어집니다. 그럼 eventMessage만 기능별로 잘 작성하면 socket.js에 모든 로직을 넣지 않고
기능별로 socket 로직 또한 나눌 수 있게 됩니다.
/ ../server.jsconsthttp=require('./src/app');require('./src/socket');require('./src/game/game-socket')// <- 추가require('./src/rooms/room-socket')// <- 추가constconnect=require('./src/schemas');connect();http.listen(3000,()=>{console.log('connect on http://127.0.0.1');});
@kimhsno1
eventMessage를 test1, test2, test3 으로 통신해보면 socket.id는 그대로고 각 eventMessage도 잘 동작합니다!
아마 chat, game, room, user 등 socket 관련한 로직들을 기능별로 나눌 수 도 있을것같아요!
chat이나 user 이 외에 나눌 기능들 확인해보고 코드가 복잡해지겠다 싶으면 나누고 아니면 굳이 안나눠도 될것같긴합니다!
일단 room이랑 game이 코드가 길어질 것 같아서 이 둘은 일단 나누고 가는건 어떤가요?
✂️기능 별 socket.js 만들어서 socket 로직 분리 후 서버 테스트 시 연결이 안됨.
기존에 socket.js 의 내용을 기능별로 쪼개서 각 파일별로 해당하는 기능만을 작성할 수 있도록 파일을 나눠봤습니다.
🔍에러 내용
에러는 아니지만 제가 생각했던 것은 터미널에
이런 식으로 하나의 socket.id를 여러 모듈화한 소켓 파일에서 바라보길 바랬는데 실제 터미널 로그를 보면
socket.js 에서만
console.log
가 실행되고 나머지 파일은 거치질 않습니다.🔍조치 사항
프로젝트 최상단에 server.js에서 처음 socket.js를 require 해주듯이, game-socket.js와 room-socket.js를 require 해주면
하나의 socket이 여러 파일에서 connection되어집니다. 그럼 eventMessage만 기능별로 잘 작성하면 socket.js에 모든 로직을 넣지 않고
기능별로 socket 로직 또한 나눌 수 있게 됩니다.
환경 설정
The text was updated successfully, but these errors were encountered: