Add mock heart rate simulator flow
This commit is contained in:
@@ -60,6 +60,12 @@ function isMockGpsPayload(payload) {
|
||||
&& Number.isFinite(payload.lon)
|
||||
}
|
||||
|
||||
function isMockHeartRatePayload(payload) {
|
||||
return payload
|
||||
&& payload.type === 'mock_heart_rate'
|
||||
&& Number.isFinite(payload.bpm)
|
||||
}
|
||||
|
||||
async function handleProxyRequest(request, response) {
|
||||
const requestUrl = new URL(request.url || '/', `http://127.0.0.1:${PORT}`)
|
||||
const targetUrl = requestUrl.searchParams.get('url')
|
||||
@@ -111,19 +117,25 @@ wss.on('connection', (socket) => {
|
||||
return
|
||||
}
|
||||
|
||||
if (!isMockGpsPayload(parsed)) {
|
||||
if (!isMockGpsPayload(parsed) && !isMockHeartRatePayload(parsed)) {
|
||||
return
|
||||
}
|
||||
|
||||
const serialized = JSON.stringify({
|
||||
type: 'mock_gps',
|
||||
timestamp: Number.isFinite(parsed.timestamp) ? parsed.timestamp : Date.now(),
|
||||
lat: Number(parsed.lat),
|
||||
lon: Number(parsed.lon),
|
||||
accuracyMeters: Number.isFinite(parsed.accuracyMeters) ? Number(parsed.accuracyMeters) : 6,
|
||||
speedMps: Number.isFinite(parsed.speedMps) ? Number(parsed.speedMps) : 0,
|
||||
headingDeg: Number.isFinite(parsed.headingDeg) ? Number(parsed.headingDeg) : 0,
|
||||
})
|
||||
const serialized = isMockGpsPayload(parsed)
|
||||
? JSON.stringify({
|
||||
type: 'mock_gps',
|
||||
timestamp: Number.isFinite(parsed.timestamp) ? parsed.timestamp : Date.now(),
|
||||
lat: Number(parsed.lat),
|
||||
lon: Number(parsed.lon),
|
||||
accuracyMeters: Number.isFinite(parsed.accuracyMeters) ? Number(parsed.accuracyMeters) : 6,
|
||||
speedMps: Number.isFinite(parsed.speedMps) ? Number(parsed.speedMps) : 0,
|
||||
headingDeg: Number.isFinite(parsed.headingDeg) ? Number(parsed.headingDeg) : 0,
|
||||
})
|
||||
: JSON.stringify({
|
||||
type: 'mock_heart_rate',
|
||||
timestamp: Number.isFinite(parsed.timestamp) ? parsed.timestamp : Date.now(),
|
||||
bpm: Math.max(1, Math.round(Number(parsed.bpm))),
|
||||
})
|
||||
|
||||
wss.clients.forEach((client) => {
|
||||
if (client.readyState === client.OPEN) {
|
||||
|
||||
Reference in New Issue
Block a user