import React, { useEffect, useState } from "react";
import "../App.css";
import Maps from "./Maps";
import SideNavigation from "../Sidebar/Navigation";
import axios from "axios";
import io from "socket.io-client";
import { faVolumeUp, faVolumeXmark } from "@fortawesome/free-solid-svg-icons";
import Cookies from "js-cookie";
const socket = io.connect(`${process.env.REACT_APP_SERVER_IP}:3001`, { withCredentials: true, transports: [ "websocket" ] });
export const Location = () => {
const [shake, setShake] = useState(false);
const [state, setState] = useState(false);
const [lat, setLat] = useState("");
const [lng, setLng] = useState("");
const [gpsTime, setGPSTime] = useState("");
const [disconnected, setDisconnected] = useState(true);
const [speaker, setSpeaker] = useState(true);
async function getData() {
const userID = Cookies.get("userID");
const response = await axios.get(
`${process.env.REACT_APP_SERVER_IP}/api/getData?userID=${userID}`
);
if (response.data.state === 0) {
setState(false);
setSpeaker(faVolumeXmark);
setShake(false);
} else if (response.data.state === 1) {
setState(true);
setSpeaker(faVolumeUp);
setShake(true);
} else {
console.log(response);
}
}
function checkConnectivity() {
if(lng === "" || lat === "") {
setDisconnected(true);
}
}
async function getGPS() {
const userID = Cookies.get("userID");
if(lng === "" || lat === "") {
const response = await axios.get(
`${process.env.REACT_APP_SERVER_IP}/api/getGPS/${userID}`
);
setLat(response.data.latitude);
setLng(response.data.longitude);
setGPSTime(response.data.updatedDateTime);
setDisconnected(true);
}
}
async function buzzer(event) {
event.stopPropagation();
const userID = Cookies.get("userID");
fetch(`${process.env.REACT_APP_SERVER_IP}/api/updateBuzzer/${userID}`, {
headers: {
"Content-Type": "application/json",
},
method: "PUT",
body: JSON.stringify({
state: !state,
output: "buzzer",
}),
}).then([
setShake(!shake),
setState(!state),
state ? setSpeaker(faVolumeUp) : setSpeaker(faVolumeXmark),
]);
}
useEffect(() => {
getData();
checkConnectivity();
getGPS();
socket.on("postData", (data) => {
if (!data.lat || !data.lng || !data.lat === 0 || !data.lng === 0) {
getGPS();
} else {
setLat(data.lat);
setLng(data.lng);
setGPSTime(data.dateTime);
setDisconnected(false);
}
});
}, [shake, state, lat, lng, gpsTime, disconnected, speaker]);
return (
<div className="d-flex flex-row">
<div>
<SideNavigation></SideNavigation>
</div>
<div
style={{ width: "100%", height: "100vh" }}
className="d-flex flex-column">
<Maps
buzzer={buzzer}
shake={shake}
lat={lat}
lng={lng}
gpsTime={gpsTime}
disconnected={disconnected}
speaker={speaker}
/>
</div>
</div>
);
};
Before socket.on:
Response headers:
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Thu, 18 Apr 2024 10:43:12 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 11
Connection: keep-alive
X-Powered-By: Express
Access-Control-Allow-Origin: https://www.inswalst.com
Vary: Origin
Access-Control-Allow-Credentials: true
ETag: W/”b-P4CuhGK30Ou/ASQzSDPwfuj0UVU”
Request headers:
GET /api/getData?userID=1713172252 HTTP/1.1
Host: inswalst.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: application/json, text/plain, /
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: https://www.inswalst.com
Connection: keep-alive
Referer: https://www.inswalst.com/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
When socket.on:
Response headers:
HTTP/1.1 502 Bad Gateway
Server: nginx/1.18.0 (Ubuntu)
Date: Thu, 18 Apr 2024 10:49:13 GMT
Content-Type: text/html
Content-Length: 166
Connection: keep-alive
Request headers:
GET /api/getData?userID=1713172252 HTTP/1.1
Host: inswalst.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: application/json, text/plain, /
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Origin: https://www.inswalst.com
Connection: keep-alive
Referer: https://www.inswalst.com/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
If-None-Match: W/”b-P4CuhGK30Ou/ASQzSDPwfuj0UVU”
Why I get 502 for https://inswalst.com/api/getData?userID=1713172252 when socket.on? How to solve it?