繁体   English   中英

at=错误代码=H10 desc="App 崩溃" 方法=GET path="/socket.io/?EIO=4&transport=websocket"

[英]at=error code=H10 desc="App crashed" method=GET path="/socket.io/?EIO=4&transport=websocket"

在此处输入图像描述

当我将我的 socketio 应用程序部署到 heroku 时,我在 =error code=H10 desc="App crashed" method=GET path="/socket.io/?EIO=4&transport=websocket"收到此错误。 我将所有 env 路径移动到 heroku 上的 Config Vars 并在我的后端创建了 corsoptions。 如果有人知道如何解决此错误,请提供帮助。 下面的代码我删除了所有 process.env url,但仍然无法正常工作

服务器

import express from "express";
import { Server } from "socket.io";
import { createServer } from "http";
import cors from "cors";
import mongoose from "mongoose";
import MsgModel from './db/schema.js'
import listEndpoints from 'express-list-endpoints'
let onlineUsers = []
const app = express();
app.use(cors());
app.use(express.json());
const port = 3030
const whiteList = ["http://localhost:3000", "https://itransition-chat.vercel.app/"];

const corsOptions = {
    origin: function (origin, next) {
        console.log(origin);
        if (!origin || whiteList.indexOf(origin) !== -1) {
            next(null, true);
        } else {
            next(new Error("Not allowed by CORS"));
        }
    },
};




app.get('/online-users', (req, res) => {
    res.send({ onlineUsers })
})
const httpServer = createServer(app);
const io = new Server(httpServer);

io.on("connection", (socket) => {
    console.log(socket.id)
    socket.on("setUsername", ({ username, room }) => {
        onlineUsers.push({ username, id: socket.id, room })
        socket.join(room)
        console.log("socket room",socket.rooms)
        socket.emit("loggedin")
        // Emits to the other end of *every other* channel
        socket.broadcast.emit("newConnection")

        // Emits to every connected socket
        // io.sockets.emit() 
    })

    MsgModel.find().then(result => {
        socket.emit('output-messages', result)
    })

    socket.on("sendmessage", async({ message, room }) => {
        const newMessage = new MsgModel({ 
            text:message.text,
            sender: message.sender,
            socketId:message.socketId
        });
        newMessage.save().then(() => {
            socket.to(room).emit('message', message)
        })
        console.log("Message",newMessage);
        // Emits only to people inside of the defined "room"
    })

    socket.on("disconnect", () => {
        onlineUsers = onlineUsers.filter(user => user.id !== socket.id)
        socket.broadcast.emit("disconnectedUser")
    })

});
// CAUTION: we do not app.listen() 
// but rather httpServer.listen()
// httpServer.listen(3030, () => {
//     console.log("Server is listening on port 3030");
// });

// // *********************** DB CONNECTION ****************
mongoose.connect("mongodb+srv://alimukhtor:alimukhtor@cluster0.9wscl.mongodb.net/itransition-chat-app?retryWrites=true&w=majority");
mongoose.connection.on("connected", () => {
  console.log("Connected to MongoDB!");
  httpServer.listen(port, () => {
    console.table(listEndpoints(httpServer));
    console.log(`Server running on port ${port}`);
  });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM