0

In this code the socket connection is established between client and server which sends current timestamp every second. Everything is working fine. Only one problem, in client side i want to use endpoint as http://127.0.0.1:4001/api instead of http://127.0.0.1:4001/ what should be done is server side to acheive this?

server side----app.js

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

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), 1000);
  socket.on("disconnect", () => {
    console.log("Client disconnected");
    clearInterval(interval);
  });
});

const getApiAndEmit = socket => {
  const response = new Date();
  // Emitting a new message. Will be consumed by the client
  socket.emit("FromAP", response);
};

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

server side----index.js

const express = require("express");
const router = express.Router();

router.get("/", (req, res) => {
  res.send({ response: "I am alive" }).status(200);
});

router.get("/api", (req, res) => {
    res.send({ response: "I am jai" }).status(200);
  });

module.exports = router;

clent side---app.js

import React, { useState, useEffect } from "react";
import socketIOClient from "socket.io-client";
const ENDPOINT = "http://127.0.0.1:4001/";

function App() {
  const [response, setResponse] = useState("");

  useEffect(() => {
    const socket = socketIOClient(ENDPOINT);
    socket.on("FromAP", data => {
      setResponse(data);
    });
  }, []);

  return (
    <p>
      It's <time dateTime={response}>{response}</time>
    </p>
  );
}

export default App;
  • create a controller file for /api the just copy the whole IO scripts into the new file – Karl L Jun 29 '20 at 06:32
  • This one might help: https://stackoverflow.com/questions/47837685/use-socket-io-in-expressjs-routes-instead-of-in-main-server-js-file – Hammad Ali Jun 29 '20 at 07:08

0 Answers0