import { useCallback, useEffect } from "react"; import Stomp from "webstomp-client"; import SockJS from "sockjs-client"; import { proxy } from "../package.json"; import logo from "./logo.svg"; import "./App.css"; let stomp; const connect = async (token) => { if (stomp != null) return; let url = "/api/ws"; let message = "Connect to Websocket"; // webpack-dev-server also uses sockjs-client; // default proxy may incorrectly route requests // resulting in transport switch, // which is slow on https. // // Hence, we cannot rely on default proxy. // Requests should be sent directly to a websocket. if (process.env.NODE_ENV !== "production") { url = `${proxy}${url}`; message += " Directly"; } console.info(message); const sock = new SockJS(url); stomp = Stomp.over(sock); // disable stomp logging stomp.debug = (msg) => {}; stomp.connect( // { "X-Authorization": token.split(".").slice(0, 2).join(".") + ".alkdjalskdjals" }, { "Authorization": `Bearer ${token}` }, (frame) => { console.log("Connected", frame); const requestUrl = "/app/simple"; let params = { tratata: 1, gratata: 0, }; stomp.subscribe("/user/simple", (results) => { console.log(`msg from server: ${results.body}`); }); stomp.send(requestUrl, JSON.stringify(params)); }, (error) => { console.error("Disconnected: ", error); }, ); }; function App({ keycloak }) { const fetchFromApi = useCallback( async (url) => { const response = await fetch(url, { headers: { Authorization: `Bearer ${keycloak.token}`, }, }); if (response.ok) { alert(await response.text()); } else { console.error(response.statusText); } }, [keycloak.token], ); useEffect(() => { connect(keycloak.token); }, [keycloak.token]); return (
logo

Edit src/App.js and save to reload.

{ e.preventDefault(); fetchFromApi("/api/userinfo"); }} > Get user email
{ e.preventDefault(); fetchFromApi("/api/users"); }} > Get all users
{ e.preventDefault(); keycloak.logout({ redirectUri: "http://localhost:3000", }); }} > Logout
); } export default App;