• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

질문이요.

19.09.02 22:44 작성 조회수 77

0

router.js 에서요 

경매 입찰 라우터에서요, 

router.post('/good/:id/bid', isLoggedIn, async (req, res, next) => {
.....
.....
req.app.get('io').to(req.params.id).emit('bid', {
bid: result.bid,
msg: result.msg,
nick: req.user.nick,
});
....
....
}}

이 소켓은, auction.pug 에있는, 

socket.on('bid', function (data) {
var div = document.createElement('div');
var span = document.createElement('span');
span.textContent = data.nick + '님: ';
var strong = document.createElement('strong');
strong.textContent = data.bid + '원에 입찰하셨습니다.';
div.appendChild(span);
div.appendChild(strong);
if (data.msg) {
span = document.createElement('span');
span.textContent = '(' + data.msg + ')';
div.appendChild(span);
}
document.querySelector('#bid').appendChild(div);
});

 

이 이벤트를 발생시키잖아요.

1.

req.app.get('io').to(req.params.id).emit('bid'

이 부분에서, to 특정한 것에 보내는것인데, 

.to(req.params.id) 가 어떤식으로 인식을해서 보내지는지 이해가 안가네요

정작 acution.pug 에서는 

socket.on('bid', function (data) {

는 id 가 몇인지 구분하는게 없는거 같은데 말이죠??... 

2.

라우터 -> socket.js -> auction .pug 로 바로 가는거 맞죠?????

답변 1

답변을 작성해보세요.

0

action.pug는 프론트에서 실행됩니다. 그리고 프론트에서 처음 소켓 연결 시도할 때 특정 방에 join하고요. 그 후req.params.id(방 아이디)로 emit하면 자동으로 보내집니다.

 

socket.js는 거치지 않습니다.