8회차

Node.js로 구현하는 쇼핑몰 프로젝트 8회차 수업 요약 내용입니다.

Socket.io

  • Node.js용 소켓프로그래밍 지원
  • 서버와의 양방향 통신
  • 클라이트와 서버와 연결
  • 원리 : 서버와의 연결을 해놓고, 중간에 이벤트가 발생하면 클라이언트에 바로 반영
  • 단방향 : 클라이언트가 setInterval로 지속적으로 체크
  • 양방향 : 서버와 연결을 맺어놓고, 다른 사용자의 이벤트가 있을시 즉각반영
  • 작동 흐름
    1) 웹페이지 접속
    2) 클라이언트 var socket = io(); 로
    3) 서버와 연결관계를 맺음
    4) 서버에 이벤트로 emit
    5) 전체 클라이언트에 메시지전달
  • 서버측 구현
    1) 소켓접속시 사용자 정보 갱신
// userList에 내 정보가 없으면 삽입
if(userList.indexOf(user.username) === -1){
userList.push(user.username);
}
2) 채팅방 접속시
// 사용자 리스트 반환
io.emit('join', userList);
3) 채팅방 종료시
// 내 정보 삭제하고 사용자리스트 반환
socket.on('disconnect', function(){
userList.removeByValue(user.username);
io.emit('leave', userList);
});
4) 채팅 메시지 보내는 경우
// 사용자 명과 메시지 같이 반환
socket.on('chat message', function(data){
io.emit('chat message', { message : data.message , username : user.username });
});
});
  • 클라이언트측 구현
// 접속시 데이터를 update함수로 넘긴다
socket.on('join', function(data){
updateUserList(data);
});
// 이탈시
socket.on('leave', function(data){
updateUserList(data);
});
// 채팅방으로 조인
socket.join('방이름')
// 채팅방으로 나감
socket.leave('방이름')
// 귓속말 : 클라이언트에서 넘겨주거나 or 서버 측에서 상대소켓아이디를 알아냄
io.sockets[socket.id]

Nodejs 채팅모듈 종류

  • npm websocket
  • npm socket.io
Last modified 3yr ago