728x90
안녕하세요 웹코기입니다.
저는 현재 사내에서 웹소켓을 이용해 실시간 채팅 기능을 구현하고 있습니다.
웹소켓은 개념 정도만 알고 있었는데, 역시 실제로 사용해보니 어떤 녀석인지 확 와닿더군요...!!
기존에 서버에서 통신할 땐
ajax나 axios만 사용했던 터라 단방향 통신에만 익숙했었는데요,
websocket을 이용해 양방향 통신을 해보니 신세계네요 :)
websoket.io나 다른 웹소켓 관련 라이브러리를 사용하면 더 편하게 사용할 수 있는 것으로 파악됐으나,
저는 사내 프로젝트가 프런트엔드 프레임워크나 nodejs를 사용하지 않은 이미 날 것(?)의 재료를 썼으므로, 저 또한 날 것의 websocket을 쓰기로 했습니다.
아래는 라이브러리를 전혀 사용하지 않고 작업한 소스입니다.
웹에 갖다 붙이면 그대로 쓰실 수 있어요.
//////////////////////////////////////
//////// WebSocket Handler ///////////
//////////////////////////////////////
if (window["WebSocket"]) {
var logMsgKey = 0;
var msgKey = 0;
var topicListObject = new Map();
var topicListButtonMap = new Map();
var websocketConnection = new WebSocket("ws://" + location.host + "/ws");
websocketConnection.onclose = function (evt) {
if (evt.wasClean) {
console.log("[close] 커넥션이 정상적으로 종료되었습니다 + (code=" + evt.code + " reason=" + evt.reason + ")");
} else {
console.log("[close] 커넥션이 죽었습니다. + (code=" + evt.code + " reason=" + evt.reason + ")");
}
};
websocketConnection.onopen = function (evt) {
console.log('Connection onopen.');
};
websocketConnection.onerror = function (error) {
console.log('Connection onerror.');
};
websocketConnection.onmessage = function (evt) {
var messages = evt.data.split('\n');
for (var index = 0; index < messages.length; index++) {])
console.log(messages[index]);
}
};
} else {
console.log("Your browser does not support WebSockets.");
}
1. 웹소켓 연결
2. 웹소켓 open
동작 순서로 이루어지고요!!
websocketConnection.send('메시지')
를 필요한 곳에서 사용하게 된다면, 서버를 통해 onmessage에서 해당 값을 실시간으로 받게 됩니다.
현재 작업한 이벤트는
onclose, onopen, onerror, onmessage를 사용했는데요,
아래의 링크에 보시면 더 많은 재료를 확인하실 수 있습니다.
https://developer.mozilla.org/ko/docs/Web/API/WebSocket
728x90
'Language > JS' 카테고리의 다른 글
tensorflow.js 찍먹해보기 (이미지 분류 from 생활코딩) (0) | 2022.08.09 |
---|---|
브이월드) 내가 찍은 좌표대로 경로 이동하기 [결론 : 실패] (2) | 2021.06.08 |
브이월드) x,y,z 좌표 값 가져오기 (webGL 3D) (1) | 2021.06.03 |
브이월드) 정부제공 지도플랫폼 알아보기 (0) | 2021.05.28 |
JS로 호버해 img 변경시, 이미지 깜빡임 현상 없애기 (1) | 2021.02.07 |