Как сохранить соединение socket.io в фоновом режиме с моим приложением реакции - PullRequest
0 голосов
/ 06 апреля 2020

Мне было интересно, может ли кто-нибудь помочь, я создал приложение реагирования, которое использует socket.io для обновления моей страницы, чтобы постоянно делать запросы к API и показывать местную погоду, однако, когда я загрузил в netlify, если я не я использую сервер в моем терминале (узел server. js), температура не отображается на моем сайте netlify,

Знаете ли вы, как я буду поддерживать работу этого сервера? Нужно ли отдельно размещать соединение socket.io, например, на heroku? Как бы я сохранил эту связь? Мой сервер. js Файл ниже, также есть индекс. js, который является моим запросом на получение

Заранее спасибо !!!

const express = require("express");
const http = require("http");
const socketIo = require("socket.io");
const axios = require("axios");

 const port = process.env.PORT || 4001;
 const index = require("./index");

 const app = express();
   app.use(index);

const server = http.createServer(app);

const io = socketIo(server);

let interval;


 io.on("connection", (socket) => {
 console.log("New client connected");
 if (interval) {
  clearInterval(interval);
 }



 interval = setInterval(() => getApiAndEmit(socket), 10000);
  socket.on("disconnect", () => {
  console.log("Client disconnected");
  });
});

server.listen(port, () => console.log(`Listening on port ${port}`));

const getApiAndEmit = async (socket) => {
 try {
   const res = await axios.get(
    "http://api.weatherapi.com/v1/current.json?key=xxx=Manchester"
   );
  socket.emit("FromAPI", res.data); 
  } catch (error) {
        console.error(`Error: ${error.code}`);
        }
    };
...