websocket.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { Elysia } from 'elysia'
  2. import Meteostanice from '../../utils/meteostanice'
  3. export default new Elysia()
  4. .ws("/sendData/:key", {
  5. message({ send, data: { params: { key } } }, message) {
  6. if (message === "meow :3") {
  7. return send("meow :3")
  8. }
  9. message = Bun.JSON5.parse(message.toString())
  10. if (
  11. !message?.indoorTemp ||
  12. !message?.indoorPressure ||
  13. !message?.indoorHumidity ||
  14. !message?.indoorAltitude ||
  15. !message?.outdoorConnected ||
  16. !message?.outdoorTemp ||
  17. !message?.outdoorPressure ||
  18. !message?.outdoorHumidity ||
  19. !message?.outdoorAltitude
  20. ) {
  21. return send("missing required fields: indoorTemp, indoorPressure, indoorHumidity, indoorAltitude, outdoorConnected, outdoorTemp, outdoorPressure, outdoorHumidity, outdoorAltitude")
  22. }
  23. const meteostanica = Meteostanice.getWebsocket(key)
  24. if (!meteostanica) {
  25. return send("invalid station websocket key")
  26. }
  27. const {
  28. indoorTemp,
  29. indoorPressure,
  30. indoorHumidity,
  31. indoorAltitude,
  32. outdoorConnected,
  33. outdoorTemp,
  34. outdoorPressure,
  35. outdoorHumidity,
  36. outdoorAltitude
  37. } = message
  38. Meteostanice.postData(
  39. meteostanica.id,
  40. indoorTemp,
  41. indoorPressure,
  42. indoorHumidity,
  43. indoorAltitude,
  44. outdoorConnected,
  45. outdoorTemp,
  46. outdoorPressure,
  47. outdoorHumidity,
  48. outdoorAltitude
  49. )
  50. send(`posted data for ${meteostanica.name}`)
  51. }
  52. })