generated from lucien/api-template
fix: fixed websockets
This commit is contained in:
parent
edc6f34733
commit
1fee32f1d2
5 changed files with 14 additions and 53 deletions
|
@ -10,16 +10,21 @@ import Register from './pages/Register'
|
||||||
import CreateChannel from './pages/CreateChannel'
|
import CreateChannel from './pages/CreateChannel'
|
||||||
import ChannelsPage from './pages/ChannelsPage'
|
import ChannelsPage from './pages/ChannelsPage'
|
||||||
|
|
||||||
|
const socket = new WebSocket("/api/ws");
|
||||||
|
setInterval(() => {
|
||||||
|
socket.send("ping");
|
||||||
|
}, 30 * 1000);
|
||||||
|
|
||||||
createRoot(document.getElementById('root')!).render(
|
createRoot(document.getElementById('root')!).render(
|
||||||
<BrowserRouter>
|
<BrowserRouter>
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route path="/" element={<Home />} />
|
<Route path="/" element={<Home socket={socket} />} />
|
||||||
<Route path="/c/:name" element={<ChannelPage />} />
|
<Route path="/c/:name" element={<ChannelPage socket={socket} />} />
|
||||||
<Route path="/u/:username" element={<UserPage />} />
|
<Route path="/u/:username" element={<UserPage socket={socket} />} />
|
||||||
<Route path="/login" element={<Login />} />
|
<Route path="/login" element={<Login />} />
|
||||||
<Route path="/register" element={<Register />} />
|
<Route path="/register" element={<Register />} />
|
||||||
<Route path="/create-channel" element={<CreateChannel />} />
|
<Route path="/create-channel" element={<CreateChannel />} />
|
||||||
<Route path="/channels" element={<ChannelsPage />} />
|
<Route path="/channels" element={<ChannelsPage socket={socket} />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
</BrowserRouter>
|
</BrowserRouter>
|
||||||
)
|
)
|
||||||
|
|
|
@ -7,7 +7,7 @@ import axios from "axios";
|
||||||
|
|
||||||
import "../styles/ChannelPage.css";
|
import "../styles/ChannelPage.css";
|
||||||
|
|
||||||
export default function ChannelPage() {
|
export default function ChannelPage({socket}: {socket: WebSocket}) {
|
||||||
const { name } = useParams();
|
const { name } = useParams();
|
||||||
const [channel, setChannel] = useState<Channel>();
|
const [channel, setChannel] = useState<Channel>();
|
||||||
const [messages, setMessages] = useState<Messages>();
|
const [messages, setMessages] = useState<Messages>();
|
||||||
|
@ -71,12 +71,6 @@ export default function ChannelPage() {
|
||||||
}, [name]);
|
}, [name]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const socket = new WebSocket(`/api/ws`);
|
|
||||||
|
|
||||||
const id = setInterval(() => {
|
|
||||||
socket.send(JSON.stringify("ping"));
|
|
||||||
}, 10000);
|
|
||||||
|
|
||||||
socket.addEventListener('message', function (event) {
|
socket.addEventListener('message', function (event) {
|
||||||
const data = JSON.parse(event.data);
|
const data = JSON.parse(event.data);
|
||||||
if ((data.type === "new_message" || data.type === "delete_message") && data.channel_id === channel?.id) {
|
if ((data.type === "new_message" || data.type === "delete_message") && data.channel_id === channel?.id) {
|
||||||
|
@ -86,11 +80,6 @@ export default function ChannelPage() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return () => {
|
|
||||||
clearInterval(id);
|
|
||||||
socket.close();
|
|
||||||
}
|
|
||||||
}, [channel])
|
}, [channel])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
|
@ -6,7 +6,7 @@ import TopBar from "../components/TopBar"
|
||||||
|
|
||||||
import "../styles/ChannelsPage.css"
|
import "../styles/ChannelsPage.css"
|
||||||
|
|
||||||
export default function ChannelsPage() {
|
export default function ChannelsPage({socket}: {socket: WebSocket}) {
|
||||||
const [channels, setChannels] = useState<Channels>();
|
const [channels, setChannels] = useState<Channels>();
|
||||||
const [search, setSearch] = useState<string>("");
|
const [search, setSearch] = useState<string>("");
|
||||||
const [user, setUser] = useState<User>();
|
const [user, setUser] = useState<User>();
|
||||||
|
@ -34,12 +34,6 @@ export default function ChannelsPage() {
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const socket = new WebSocket("/api/ws");
|
|
||||||
|
|
||||||
const id = setInterval(() => {
|
|
||||||
socket.send(JSON.stringify("ping"));
|
|
||||||
}, 10000);
|
|
||||||
|
|
||||||
socket.addEventListener('message', function (event) {
|
socket.addEventListener('message', function (event) {
|
||||||
const data = JSON.parse(event.data);
|
const data = JSON.parse(event.data);
|
||||||
if (data.type === "new_channel") {
|
if (data.type === "new_channel") {
|
||||||
|
@ -53,11 +47,6 @@ export default function ChannelsPage() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return () => {
|
|
||||||
clearInterval(id);
|
|
||||||
socket.close();
|
|
||||||
}
|
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
if (!channels) {
|
if (!channels) {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import axios from "axios"
|
||||||
|
|
||||||
import "../styles/Home.css"
|
import "../styles/Home.css"
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home({socket}: {socket: WebSocket}) {
|
||||||
const [user, setUser] = useState<User>();
|
const [user, setUser] = useState<User>();
|
||||||
const [channels, setChannels] = useState<RecentChannels>();
|
const [channels, setChannels] = useState<RecentChannels>();
|
||||||
const [messages , setMessages] = useState<Messages>();
|
const [messages , setMessages] = useState<Messages>();
|
||||||
|
@ -59,12 +59,6 @@ export default function Home() {
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const socket = new WebSocket("/api/ws");
|
|
||||||
|
|
||||||
const id = setInterval(() => {
|
|
||||||
socket.send(JSON.stringify("ping"));
|
|
||||||
}, 10000);
|
|
||||||
|
|
||||||
socket.addEventListener('message', function (event)
|
socket.addEventListener('message', function (event)
|
||||||
{
|
{
|
||||||
const data = JSON.parse(event.data);
|
const data = JSON.parse(event.data);
|
||||||
|
@ -106,11 +100,6 @@ export default function Home() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return () => {
|
|
||||||
clearInterval(id);
|
|
||||||
socket.close();
|
|
||||||
}
|
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import axios from "axios";
|
||||||
|
|
||||||
import "../styles/UserPage.css";
|
import "../styles/UserPage.css";
|
||||||
|
|
||||||
export default function UserPage() {
|
export default function UserPage({socket}: {socket: WebSocket}) {
|
||||||
const { username } = useParams();
|
const { username } = useParams();
|
||||||
const [pageUser, setPageUser] = useState<User>();
|
const [pageUser, setPageUser] = useState<User>();
|
||||||
const [messages, setMessages] = useState<Messages>();
|
const [messages, setMessages] = useState<Messages>();
|
||||||
|
@ -45,12 +45,6 @@ export default function UserPage() {
|
||||||
}, [username]);
|
}, [username]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const socket = new WebSocket("/api/ws");
|
|
||||||
|
|
||||||
const id = setInterval(() => {
|
|
||||||
socket.send(JSON.stringify("ping"));
|
|
||||||
}, 10000);
|
|
||||||
|
|
||||||
socket.addEventListener('message', function (event) {
|
socket.addEventListener('message', function (event) {
|
||||||
const data = JSON.parse(event.data);
|
const data = JSON.parse(event.data);
|
||||||
if ((data.type === "new_message" || data.type === "delete_message") && data.user_id === pageUser?.id) {
|
if ((data.type === "new_message" || data.type === "delete_message") && data.user_id === pageUser?.id) {
|
||||||
|
@ -65,11 +59,6 @@ export default function UserPage() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return () => {
|
|
||||||
clearInterval(id);
|
|
||||||
socket.close();
|
|
||||||
};
|
|
||||||
}, [pageUser]);
|
}, [pageUser]);
|
||||||
|
|
||||||
if (!pageUser) {
|
if (!pageUser) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue