javascript - webSocket 握手期间出错意外响应代码 : 400

标签 javascript node.js websocket socket.io mean-stack

我尝试使用 socket.io 在我的 node 应用程序中实现 cluster。如果我不使用 cluster 一切正常。但是当我使用 cluster 时,它会在客户端浏览器中发生以下错误。

WebSocket connection to 'ws://localhost:8000/socket.io/?EIO=3&transport=websocket&sid=Ff8LkaCbF5g92lKOAAAS' failed: Error during WebSocket 
socket.js:2 POST http://localhost:8000/socket.io/?EIO=3&transport=polling&t=MAjySbD&sid=Ff8LkaCbF5g92lKOAAAS 400 (Bad Request)

这里是 server.js

var http = require('http');
var app = require('../app');
cluster = module.exports = require('cluster');
const numCPUs = require('os').cpus().length;
var server = http.createServer(app);
io = module.exports = require('socket.io').listen(server, {
    pingTimeout: 7000,
    pingInterval: 10000
});
io.set("transports", ["xhr-polling","websocket","polling"]);
if(cluster.isMaster){
    for (let i = 0; i < numCPUs; i++) {
        cluster.fork();
    }
    cluster.on('exit', (worker, code, signal) => {
        console.log(`worker ${worker.process.pid} died`);
    });

} else {
    var port = 8000;
    var  host = '0.0.0.0';
    server.listen(port,host,function(){
        log('server is running on ' + host +':'+port);
    });
}

这里是client.js

var socket = io.connect('http://localhost:8000/dashboard',{transports: ['websocket']}); 

最佳答案

检查您是否使用 express-status-monitor 作为 express 上的中间件,这会使 WebSocket 的第一次(请求)握手时的 http 调用失败,或者可能是代理(nginx)等其他因素或类似的

here有关此错误的更多详细信息

关于javascript - webSocket 握手期间出错意外响应代码 : 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49745800/

相关文章:

python 3; Websockets 服务器和 HTTP 服务器 - run_forever 和 serve_forever

java - WebSocket 立即断开连接 - Openshift

javascript - 如何使网格在背景上?

javascript - 如何将小时添加到解析时刻日期?

javascript - 为什么只能从 127.0.0.1/localhost 访问 Node.js 应用程序?

javascript - NodeJs 错误 : spawn C:\Windows\system32\cmd. exe;恩恩

javascript - 如何一次记录多个变量?

javascript - 如何确保我的值已添加并存在,然后运行另一个代码 jquery?

node.js - Node Gui安装找不到Cmake

python - Python Tornado中的已连接客户端列表