Socket.io 在 localhost 上工作,但在部署 heroku 后无法工作?

Posted

技术标签:

【中文标题】Socket.io 在 localhost 上工作,但在部署 heroku 后无法工作?【英文标题】:Socket.io is working on localhost but not working after deploying heroku? 【发布时间】:2022-01-15 11:50:53 【问题描述】:

这是我的套接字服务器的代码

const io = require("socket.io")(8080, 
cors: 
  // origin: "http://localhost:3000", 
     origin: "https://mern-bubble.herokuapp.com",
    , 
);

这是我的客户端代码

useEffect(() => 
   // socket.current = io("ws://localhost:8800");
      socket.current = io("ws://mern-bubble.herokuapp.com:8800");

       socket.current.on("getUser", (data) => 
       console.log("data from socket", data);
       dispatch(updateUserInfo(data));
    );
 , [dispatch]);

当我在本地主机上工作时它工作得很好,但是当我在 heroku 上部署我的项目时,socket.io 没有任何响应?

【问题讨论】:

【参考方案1】:

所以我认为端口 8800 没有在 heroku 上打开。您应该坚持使用端口 3000 并重试。 https://devcenter.heroku.com/articles/node-websockets#option-2-socket-io

【讨论】:

【参考方案2】:

Heroku 的端口是在启动 Dyno 时动态分配的。不要硬编码端口8800,而是使用环境变量$PORT

【讨论】:

以上是关于Socket.io 在 localhost 上工作,但在部署 heroku 后无法工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何在同一个端口上运行 express 和 socket.io

Socket IO 在本地机器上工作正常,但在 Heroku 上不工作

节点 Socket.io 链接如何在服务器而不是 localhost(wamp/xampp) 中提供

在域上运行 socket.io

尽管被设置为特定 IP,socket.io 仍引用 localhost

socket.io 连接在生产中失败,在 localhost 中工作