실시간/Socket IO 6

6. 닉네임

닉네임을 정하게 해보자. 정말 간단하다. form#name input(type="text" placeholder="Nickname", required) button Save 그냥 form 하나 새로 더 만들어서.. $nicknameForm.addEventListener("submit",(e)=>{ e.preventDefault(); const $input = $nicknameForm.querySelector("input"); socket.emit("nickname", $input.value); }); 이벤트를 추가해 주었다. 서버에 nickname이라는 이벤트를 내가 적은 input의 값과 함께 전달 할 것이다. io.on("connection", socket =>{ socket.nickname = "A..

실시간/Socket IO 2023.11.01

5. 알림

떠나는 걸 알림 SocketIO에는 당연히 우리가 명명한 이벤트 말고도, 다양한 이벤트가 있다. 그 중 하나가 disconnecting 이거는 disconnect와 다르다. 말 그대로 연결을 끊는 '중'이다. 그러니까 왜, 완전히 끊어버리면 뭔갈 못하니까, 완전히 끊기 전에 하고 싶은 거 날리는 그런 거다. io.on("connection", socket =>{ socket.on("disconnecting", ()=>{ socket.rooms.forEach(room => socket.to(room).emit("bye")); }) }) 추가로 등록해 줬다. socket이 연결을 끊고 있을 때, 그 소켓이 가입했던 모든 방에다가 "bye"라는 이벤트를 날린다. 그러면, socket.on("bye",()=>{..

실시간/Socket IO 2023.10.31

4. 방 만들기

이 room 기능, 그러니까 특정 소켓끼리 묶는 이 기능을 이미 socketIO는 제공해 준다. 굉장히 쉽다. 그냥 socket.join("방이름") 해주면 끝이다. https://socket.io/ Socket.IO Reliable Rest assured! In case the WebSocket connection is not possible, it will fall back to HTTP long-polling. And if the connection is lost, the client will automatically try to reconnect. socket.io 여기 ServerAPI, ClientAPI에서 공식 문서 확인할 수 있다. socket.onAny(e=>{ console.log(`s..

실시간/Socket IO 2023.10.31

2. Socket IO 설치

npm i socket.io 설치하고, 이제 사용해 보자. 기존에 사용하던 websocket 지우고, socket.io를 사용할 것이다. const server = http.createServer(app); const wss = new WebSocketServer({server}); 기존에 이렇게 http 서버를 웹소켓으로 감싸면서 둘이 연결하였다. socket.io도 마찬가지 이다. const server = http.createServer(app); const io = SocketIO(server); 이렇게 하고 사용하면 된다. 이렇게 하면, 또 하나 자동으로 만들어지는 url이 있다. http://localhost:3000/socket.io/socket.io.js 이 url인데, 이게 뭐냐면, 클라..

실시간/Socket IO 2023.10.27

1. Socket IO

Socket IO는 나온지 오래 되었다. 안정적이다. Socket IO는 실시간, 양방향, event 기반의 통신이 가능하다. Socket IO는 websocket과 다르다고 함. 그러니까 가끔 Socket IO가 websocket을 이용하기는 하는데, 다른 거 라고 함. 프록시나 방화벽이 있다고 해도 socket IO는 계속 작동한다고 한다. 그리고 Socket IO가 만약 브라우저가 websocket을 지원한다는 것을 확인하면 websocket을 이용한다고 한다. 또, websocket을 지원하지 않으면 다른 걸 사용한다고 한다. (HTTP long-polling을 사용한다고 한다.) 이런 걸 탄력성이라 한다. 그러니까, 뭐랄까 어댑터? 같은 역할이려나. 그런 걸 websocket 등 소켓 이용하는 ..

실시간/Socket IO 2023.10.27