Socket.IO란
- Socket.IO는 websocket의 부가기능이 아니다.
- Socket.IO는 websocket을 사용한다. 하지만 브라우저가 websocket을 지원하지 않으면 다른 것을 사용한다.(HTTP long polling같은)
- Socket.IO는 연결이 끊어졌을 때, 자동으로 재연결을 시도하는 등의 부가기능들이 있다.
- 과거에는 백엔드에서는 아무것도 설치할 필요가 없었다. 브라우저에서 제공하는 websocket api를 사용하면 되었기 때문에. 하지만 브라우저가 주는 websocket은 socket.io와 호환이 되지 않는다. 왜냐하면 socket.io가 더 많은 기능을 가지고 있기 때문에.
- 특정한 event를 emit해 줄 수 있다. 어떤 이름이든 상관없이.
- object를 전송할 수 있다. 꼭 string일 필요가 없다는 뜻.
Socket.IO로 메시지 보내기
server쪽 code
client쪽 code
socket에 대한 메서드로 emit을 사용할 때, emit메서드에 대한 인자들에 대해 다음과 같은 규칙을 따라야 한다.
위의 캡쳐 사례와 잘 대조해보면 좋을 것 같다.
Socket.IO로 front-end에서 정의한 콜백함수를 back-end에서 명령하여 front-end영역에서 실행되도록 하기
emit메서드에 대한 마지막 인자로 함수를 넣는다.
emit 메서드에 대한 인자로 event와 input.value, 그리고 마지막으로 backendDone이라는 함수를 보냈다. 그리고 backendDone이라는 함수는 front-end에서 정의되었다.
백엔드에서는 done이라는 함수가 뭔지는 모르지만 3초 후에 done이라는 함수에 "hello from the backend"라는 인자를 넣어 실행시키라 명령했다.
3초 후