node.js - 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,并且套接字实际上并没有做它应该做的事情。
解决方案
您可以使用cors()
npm 包https://www.npmjs.com/package/cors
推荐阅读
- html - HTML dl标签..定义列表或描述列表?
- gcloud - 为什么 gcloud sdk 的部署命令会在我的主目录中查找文件?
- firebase - 为新集合设置规则
- angular - 带有 Angular 11 热重载的 MVC 5
- jquery - 未捕获的类型错误:通过导航栏导航到 html 页面的最顶部部分时,无法读取未定义的属性(读取“顶部”)
- c - 如何在gtk3中动态更改图像
- postgresql - PostgreSQL 中的鞋带公式
- spring - 转换器在弹簧靴中接收空字符串
- spring - Spring Framework 和 Spring Security SAML(没有 Spring Boot)
- javascript - 如果其中一个不完全相等,我该如何匹配字符串?