首页 > 解决方案 > Socket.io GET/POST 404

问题描述

我正在寻找一个类似的问题,但我仍然无法解决这个问题。我正在使用 ReactJs、Node/Express、Mongoose 和 Socket.io 开发一个聊天应用程序。一切正常,数据库正在运行,服务器正在运行,所以现在我想添加套接字。我正在尝试将客户端与服务器连接,但我收到错误(大约每 2/3 秒)POST/GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=N5PeKkf 404(未找到) .

反应:

  const host = 'http:localhost:5000/api/rooms'
  const [endpoint, setEndpoint] = useState('')

  const {width,mobileWidth} = props;

  useEffect(()=>{
    setEndpoint(`${host}${props.location.pathname}`);
    socket = io(endpoint);
    const roomId = props.location.pathname.slice(1,props.location.pathname.length);

    socket.emit('join', {roomId})

  },[endpoint])

节点:

const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const socketIo = require("socket.io");
const http = require("http");

const HttpError = require('./models/http-error');
const roomsRouter = require('./routes/rooms-routes');
const usersRouter = require('./routes/users-routes');

const app = express();

mongoose
   .connect(
      `mongodb+srv://${process.env.DB_USER}:${process.env.DB_PASSWORD}@cluster0-lnoai.mongodb.net/${process.env.DB_NAME}?retryWrites=true&w=majority`
   )
   .then(() => {
      app.listen(process.env.PORT || 5000);
   })
   .catch(err => {
      console.log(err);
   });


const server = http.createServer(app);
const io = socketIo(server);

app.use(bodyParser.json());

app.use((req, res, next) => {
   res.setHeader('Access-Control-Allow-Origin', '*');
   res.setHeader(
      'Access-Control-Allow-Headers',
      'Origin, X-Requested-With, Content-Type, Accept, Authorization'
   );
   res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PATCH, DELETE');

   next();
});

io.on('connection',(socket)=>{
   console.log('connected');
})


app.use('/api/rooms', roomsRouter);
app.use('/api/users', usersRouter);

app.use((req, res, next) => {
   throw new HttpError('Route not found.', 404);
});

app.use((error, req, res, next) => {
   if (res.headerSent) {
      return next(error);
   }

   res.status(error.code || 500).json({
      message: error.message || 'An uknown error occurres!',
      errorCode: error.code || 500
   });
});

标签: javascriptnode.jsreactjsexpresssockets

解决方案


推荐阅读