Приложение NodeJS с socket.io не работает на Heroku - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь реализовать сервер SocketIO и Express, работающий на сервере Heroku.

Вот код сервера:

const express = require("express");
const path = require("path");
const app = express();
const HEROKU_PORT = process.env.PORT || 8080;

var http = require("http").Server(app);
var io = require("socket.io")(http);

var clients = {};

// API calls
app.get("/api/hello", (req, res) => {
  res.send({ express: "Hello From Express" });
});
if (process.env.NODE_ENV === "production") {
  // Serve any static files
  app.use(express.static(path.join(__dirname, "client/build")));
  // Handle React routing, return all requests to React app
  app.get("*", function(req, res) {
    res.sendFile(path.join(__dirname, "client/build", "index.html"));
  });
}
/****************************** */
io.on("connection", function(socket) {
  socket.on("I am", function(msg) {
    clients[msg] = socket.id;
    console.log(clients);
    console.log(msg, "connected");
  });
  socket.on("command", function(msg) {
    console.log(msg);
    console.log(socket.id);

    io.to(clients["Home server"]).emit("button", msg);
  });
});
/****************************** */

http.listen(HEROKU_PORT, function() {
  console.log(`SocketIO listening on port ${HEROKU_PORT}`);
});

Приведенный выше код отлично работает на моем компьютере.Но когда я загружаю его на Heroky, он работает частично.Сервер отвечает на GET/api/hello, но не поддерживает SocketIO соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...