๋ฆฌ์กํธ์ ์คํ๋ง ์๋ฒ๊ฐ์ ์น์์ผ ์ฐ๊ฒฐ์ด ์๋จ
IDE์์๋ ์๋ฌด๋ฐ ์ค๋ฅ๊ฐ ๋จ์ง ์์
React sockjs-client, stomp ์ค์น
npm install @stomp/stompjs
// ๋ฒ์ ๋ฌธ์ ์ --force ๋ถํ์ค๋ค
npm install sockjs-client
// ๋ฒ์ ๋ฌธ์ ์ --force ๋ถํ์ค๋ค
๋ชจ๋ import๊ฐ ์๋จ
์๋ ์๋ฌ๋ฉ์ธ์ง ๋ธ

yarn remove sockjs-client, stomp ํ ์ฌ์ค์น
yarn add @types/stompjs @types/sockjs-client
import ์ค๋ฅ ํด๊ฒฐ !
import SockJS from 'sockjs-client';
import StompJs from 'stompjs';
const socket = new SockJS('/websocket-endpoint'); // ์น์์ผ ์๋ํฌ์ธํธ URL
const stompClient = StompJs.over(socket);
// ์ฐ๊ฒฐ ์ฑ๊ณต ์ ์คํ๋ ์ฝ๋ฐฑ ํจ์
const connectCallback = () => {
console.log('WebSocket ์ฐ๊ฒฐ ์ฑ๊ณต');
// ๊ตฌ๋
์ค์
stompClient.subscribe('/topic/messages', (message) => {
console.log('๋ฐ์ ๋ฉ์์ง:', message.body);
});
// ๋ฉ์์ง ๋ฐ์ก
stompClient.send('/app/sendMessage', {}, JSON.stringify({ text: 'Hello WebSocket' }));
};
// ์ฐ๊ฒฐ ์๋
stompClient.connect({}, connectCallback);
// ์ปดํฌ๋ํธ ์ธ๋ง์ดํธ ์ ์ฐ๊ฒฐ ์ข
๋ฃ
// ์ปดํฌ๋ํธ ์ธ๋ง์ดํธ ์ ์ฐ๊ฒฐ ์ข
๋ฃ
return () => {
stompClient.disconnect(() => {
console.log('WebSocket ์ฐ๊ฒฐ ์ข
๋ฃ');
// ์ถ๊ฐ๋ก ์ํํ ๋ก์ง ์์ฑ ๊ฐ๋ฅ
});
};
์ธ์ค์์๋๋ฐ ์๋์์. ๐ช..
์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค ํํ
ERROR in ../../node_modules/stompjs/lib/stomp-node.js 12:8-22
Module not found: Error: Can't resolve 'net' in
import ๊ตฌ๋ฌธ์ ์์ ํ๊ณ StompJS.over > StompJS.Client()๋ก ๋ณ๊ฒฝ
import * as StompJS from '@stomp/stompjs';
useEffect(() => {
// ์น์์ผ ์ฐ๊ฒฐ ์ค์
const socket = new SockJS('https://localhost:8080/ws/connect-websocket'); // ์น์์ผ ์๋ํฌ์ธํธ URL
// const stompClient = StompJS.over(socket);
// var stompClient = require("stompjs/lib/stomp.js").Stomp
const stompClient = new StompJS.Client();
const connectCallback = () => {
console.log('WebSocket ์ฐ๊ฒฐ ์ฑ๊ณต');
// ๊ตฌ๋
์ค์
stompClient.subscribe('/topic/messages', (message) => {
console.log('๋ฐ์ ๋ฉ์์ง:', message.body);
});
// ๋ฉ์์ง ๋ฐ์ก
stompClient.publish({
destination: '/app/sendMessage',
body: JSON.stringify({ text: 'Hello WebSocket' }),
});
};
// const errorCallback = (error) => {
// console.error('WebSocket ์ฐ๊ฒฐ ์๋ฌ:', error);
// };
socket.onopen = () => {
console.log('WebSocket ์ฐ๊ฒฐ ์ด๋ฆผ');
stompClient.configure({
brokerURL: 'https://localhost:8080/ws/connect-websocket',
onConnect: connectCallback,
// onError: errorCallback,
});
stompClient.activate();
};
socket.onclose = () => {
console.log('WebSocket ์ฐ๊ฒฐ ์ข
๋ฃ');
};
// ์ปดํฌ๋ํธ ์ธ๋ง์ดํธ ์ ์ฐ๊ฒฐ ์ข
๋ฃ
return () => {
stompClient.deactivate();
socket.close();
};
}, []);