Node.js 连接到'的WebSocket;ws://localhost:5000/socket.io/…';失败:WebSocket握手期间出错:意外响应代码:400
我正在尝试创建一个聊天应用程序,它使用MongoDB和Websocket的实时数据库。 这是我的第一个React、MongoDB和Websocket项目,请原谅可能的琐事:DNode.js 连接到'的WebSocket;ws://localhost:5000/socket.io/…';失败:WebSocket握手期间出错:意外响应代码:400,node.js,mongodb,sockets,socket.io,react-functional-component,Node.js,Mongodb,Sockets,Socket.io,React Functional Component,我正在尝试创建一个聊天应用程序,它使用MongoDB和Websocket的实时数据库。 这是我的第一个React、MongoDB和Websocket项目,请原谅可能的琐事:D 我目前正在创建一个新用户,刷新数据库,并最终在每个用户的前端实时显示创建的用户 创建和保存一个新用户可以正常工作,并且在数据库更改后(通过socket.io)实时记录新用户的数据也可以正常工作。现在,我想在我的应用程序前端访问数据库更改的信息,以便刷新无序的用户列表现在我想解决一个问题:我尝试使用以下代码连接前端和后端:
我目前正在创建一个新用户,刷新数据库,并最终在每个用户的前端实时显示创建的用户
创建和保存一个新用户可以正常工作,并且在数据库更改后(通过socket.io)实时记录新用户的数据也可以正常工作。现在,我想在我的应用程序前端访问数据库更改的信息,以便刷新无序的用户列表
现在我想解决一个问题:
我尝试使用以下代码连接前端和后端:
//...
import socketIOClient from "socket.io-client";
const ENDPOINT = "localhost:5000";
const MainContentArea = () => {
useEffect(()=>{
const socket = socketIOClient(ENDPOINT);
socket.on("changes", data => {
console.log(data);
})
});
//...
以下是我的后端代码:
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const index = require('./routes/index');
const port = process.env.PORT || 5000;
const app = express();
app.use(index);
const server = app.listen(port, () => {
console.log(`Server ist running on port: ${port}`);
})
const io = socketIo(server).listen(server);
const cors = require('cors');
const mongoose = require('mongoose');
require('dotenv').config({
path: './.env'
});
const Users = require('./models/user.model');
app.use(cors());
app.use(express.json());
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
const uri = process.env.ATLAS_URI;
mongoose.connect(uri, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true
},
function(err){
if(err){
console.log("server.js err line 44");
throw err;
}
io.on('connection', (socket) => {
console.log('user connected');
socket.on('disconnect', (socket) => {
console.log('user disconnected');
})
})
Users.watch().on('change', (change) => {
console.log('socket says: something changed in db');
console.log('change: ', change.fullDocument);
io.to(change.fullDocument).emit('changes',change.fullDocument)
})
}
);
const connection = mongoose.connection;
connection.once('open', () => {
console.log("MongoDB database connection established successfully");
})
我一直收到错误消息:到“ws://localhost:5000/socket.io/”的WebSocket连接?EIO=3&transport=websocket&sid=33wU6D8PnqclT3iZAAAB'失败:websocket握手期间出错:意外响应代码:400
我用的是Chrome,我用的是MacOS。
我非常感谢任何可能有助于解决我问题的建议 我希望,我如何发布我的问题对任何愿意帮助我的人都有帮助。如果没有,请随时给我一些建议,告诉我下次应该做得更好!这是我在这里的第一篇文章