【发布时间】:2020-06-28 20:36:51
【问题描述】:
我遇到了 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.js reactjs sockets heroku