【问题标题】:Heroku deployment issue with Socket.io....404 not found. Namespace issue?Socket.io 的 Heroku 部署问题....404 未找到。命名空间问题?
【发布时间】:2023-03-16 12:18:01
【问题描述】:

我查看了很多 Stack 页面,尽管尝试了很多变体,但仍找不到解决方案。

我正在使用 socket.io 创建一个多人游戏并在 react 中表达。利用 socket.io 的命名空间特性。

我的代码在本地环境中工作,我能够填充命名空间房间供用户连接并玩游戏。但是我上传到heroku,现在我收到了:

=GET path="/socket.io/?EIO=3&transport=polling&t=MrVg7lq" host=myherokudomain.com

来自服务器,所以我的连接正常,但没有找到所需的空间。

服务器代码如下:

const app = express();

app.use(cors({ credentials: true, origin: 'http://localhost:3000' }));

app.use(express.json());

const server = app.listen(8080, () => {
  console.log('server is running on port 8080');
});

io = socket(server);

// ROOM 1

const room1 = io.of('/room1');

room1.on('connection', socket => {
  socket.emit('RECEIVE_MESSAGE', { author: 'Server', message: 'Hi you are connected!' });
});

在服务器端的 index.js 中,我对数据库进行了部分设置:

const mongoose = require('mongoose');
const app = require('./src/app');

mongoose.connect(process.env.DATABASE_CONN, { useNewUrlParser: true }, () => {
  app.listen(process.env.PORT || 3001);
});

在客户端我有以下内容:

this.socket = io('https://myherokudomain.com/room1');

我哪里出错了?我花了两天时间来解决这个问题,我没有进一步的进展。

如有任何问题,请提出任何帮助,感激不尽!

谢谢。

【问题讨论】:

    标签: node.js heroku socket.io


    【解决方案1】:

    Heroku 设置自动移植。

    试试

    const server = app.listen(8080 || process.env.PORT, () => {
      console.log('server is running on port 8080');
    });
    

    【讨论】:

    • 感谢您的回复。我已经实现了它,但没有乐趣。
    • 实际上,伙计,你最终帮助了我。因为我意识到我实际上正在运行 app.listen 的两个实例!谢谢你让我思考这个问题。
    猜你喜欢
    • 2022-07-30
    • 1970-01-01
    • 2021-12-26
    • 2011-06-10
    • 1970-01-01
    • 2021-11-16
    • 2020-01-06
    • 2015-06-05
    • 1970-01-01
    相关资源
    最近更新 更多