我将SocketIo与Nodejs 、 Express服务器和MongoDB 一起使用,我遵循了文档。 它在连接多个客户端时工作正常,它们可以毫无问题地相互发送消息。 当我发出 Http 请求时,我无法连接任何新客户端并收到此错误。
socket.io.js:7370 WebSocket 连接到
'ws:// localhost:28232/socket.io/?userId=userAmr&EIO=3&transport=websocket&sid=wNTTgrUD-PSeNaIcAAAF '
失败:WebSocket 握手期间出错:意外的响应代码:
400
Http请求之前的其他连接用户可以继续发送消息,没有任何问题。
我调试了 Socket 库,发现客户端 socket 请求转到连接函数然后触发errorCode:1
这是我的代码
/**
* Create Express server.
*/
const app = express();
// API endpoint
app.get('/api/test',(req,res)=>{
res.status(200).send({test:"test"});
});
/**
* Init socket
*/
const server = require('http').Server(app);
const io = require('socket.io')(server);
io.on('connection', (socket) => {
// emit message to group
socket.on('emitMessage', (data, callback) => {
io.emit('emitMessage', data);
});
});
这是我关于堆栈溢出的问题https://stackoverflow.com/q/47375814/6786941
我发现了问题,包express-status-monitor
正在做出这种错误的行为。
尝试删除它,它会完美地工作
// comment these lines, as they making the issue
// const expressStatusMonitor = require('express-status-monitor');
// app.use(expressStatusMonitor());
最终代码:
let app = require('express')();
// these two lines were making the problem, please comment them. if you want to reproduce the problem enable them again
// const expressStatusMonitor = require('express-status-monitor');
// app.use(expressStatusMonitor());
let http = require('http').Server(app);
let io = require('socket.io')(http);
let port = process.env.PORT || 3000;
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
app.get('/api/v0/availabilities',(req,res)=>{
res.status(200).send({test:"test"});
});
io.on('connection', (socket) => {
// emit message to group
socket.on('emitMessage', (data) => {
io.emit('emitMessage', data);
});
});
http.listen(port, function(){
console.log('listening on *:' + port);
});
这是我关于堆栈溢出的问题https://stackoverflow.com/q/47375814/6786941
这是我对堆栈溢出的回答https://stackoverflow.com/a/47411701/6786941
@almgwary你,先生,太好了。 我面临着完全相同的问题。 我删除了 expressStatusMonitor,它的作用就像一个魅力! 谢谢! 经过很多天的搜索,我终于在使用您的建议后解决了这个问题。 万分感谢!
最有用的评论
我发现了问题,包
express-status-monitor
正在做出这种错误的行为。尝试删除它,它会完美地工作
最终代码:
这是我关于堆栈溢出的问题https://stackoverflow.com/q/47375814/6786941
这是我对堆栈溢出的回答https://stackoverflow.com/a/47411701/6786941