首页 > 解决方案 > socket.io 无法在 React 应用上的 Heroku 上运行

问题描述

我在本地主机上工作时遇到了 socket.io 的问题,但在部署到 heroku 时却没有。

在客户端我有这个:

import socketIOClient from "socket.io-client";
const socket = socketIOClient("http://127.0.0.1:4001");

在服务器端:

const http = require("http");
const socketIo = require("socket.io");
const server = http.createServer(app);

const io = socketIo(server);

io.on("connection", socket => {
  console.log("New client connected");
  socket.on("chat message", function(msg) {
    console.log("message: " + msg);
    io.emit("chat message", msg);
  });

这在本地主机上完美运行,但在 Heroku 上它会引发 CORS 错误。为了解决这个问题,我尝试改变这一行:

const socket = socketIOClient("http://127.0.0.1:4001");

const socket = socketIOClient("https://radiant-retreat-86258.herokuapp.com/");

(即应用程序的 URL)。

我也尝试将代码更改为:

import io from "socket.io-client";
const socket = io();

这两个选项都消除了 CORS 错误,但是网络显示连续的 403,并且套接字实际上并没有做它应该做的事情。

标签: node.jsreactjssocketsheroku

解决方案


您可以使用cors()npm 包https://www.npmjs.com/package/cors


推荐阅读