[Stomp] FrontEnd 구현
설치
npm i @stomp/stompjs
npm install sockjs-client
연결
const chatPrivateConnect = () => {
const serverURL = `서버URL/endpoint`;
let socket = new SockJS({serverURL});
let client = new Client({
connectHeaders: {
Authorization: `Bearer ${accessToken}`,
},
webSocketFactory: () => socket });
client.onConnect = () => {
console.log("연결 성공")
client.subscribe(`/sub/${personalChatId}`,
(res) => {
setRecvList(prevRecvList => [...prevRecvList, JSON.parse(res.body)]);
});
};
client.activate();
client.onStompError = (frame) => {
console.error('WebSocket 연결 오류:', frame);
setTimeout(client.activate(), 5000);
};
setStompClient(client);
}
전송
const send = (stompClient, sender,message, personalChatId) => {
if (stompClient && stompClient.connected) {
let msg = {
sender: sender,
text: message,
personalChatId: personalChatId
};
stompClient.publish({
destination: "/pub/api/chat/send/" + personalChatId,
body: JSON.stringify(msg)
});
} else {
alert("서버 오류로 인해 메시지 전송이 실패하였습니다!");
}
};