WebSocketwss节点网络问题

问题描述

我使用WS库进行websocket连接(wss),在node-express上构建应用程序。

一切都适用于Chrome,但不适用于Explorer(11)和FireFox, 尝试使用密码和TLS版本,但仍然无法连接 我也只能使用自签名证书。 我尝试仍在同一级别上构建POC-无法从Internet Explorer连接; 这里的代码示例:

const express = require('express');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const path = require('path');
const app = express();
const port = 3000;
const https = require('https');
const fs = require('fs');
let server
let serverOptions = {};
const WebSocket = require('ws');
app.use(bodyParser.urlencoded({ expected: false }));
app.use(bodyParser.json());
app.use(cookieParser);
const constants = require('constants');



let ciphers_new = ['TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384','TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256','TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256','TLS_DHE_RSA_WITH_AES_256_GCM_SHA384','TLS_DHE_RSA_WITH_AES_128_GCM_SHA256','TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384','TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256','TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384','TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384','aes128-gcm-sha256','aes128-sha','aes128-sha256','aes256-gcm-sha384','aes256-sha','aes256-sha256','dhe-psk-aes128-cbc-sha','dhe-psk-aes128-cbc-sha256','dhe-psk-aes128-gcm-sha256','dhe-psk-aes256-cbc-sha','dhe-psk-aes256-cbc-sha384','dhe-psk-aes256-gcm-sha384','dhe-psk-chacha20-poly1305','dhe-rsa-aes128-gcm-sha256','dhe-rsa-aes128-sha','dhe-rsa-aes128-sha256','dhe-rsa-aes256-gcm-sha384','dhe-rsa-aes256-sha','dhe-rsa-aes256-sha256','dhe-rsa-chacha20-poly1305','ecdhe-ecdsa-aes128-gcm-sha256','ecdhe-ecdsa-aes128-sha','ecdhe-ecdsa-aes128-sha256','ecdhe-ecdsa-aes256-gcm-sha384','ecdhe-ecdsa-aes256-sha','ecdhe-ecdsa-aes256-sha384','ecdhe-ecdsa-chacha20-poly1305','ecdhe-psk-aes128-cbc-sha','ecdhe-psk-aes128-cbc-sha256','ecdhe-psk-aes256-cbc-sha','ecdhe-psk-aes256-cbc-sha384','ecdhe-psk-chacha20-poly1305','ecdhe-rsa-aes128-gcm-sha256','ecdhe-rsa-aes128-sha','ecdhe-rsa-aes128-sha256','ecdhe-rsa-aes256-gcm-sha384','ecdhe-rsa-aes256-sha','ecdhe-rsa-aes256-sha384','ecdhe-rsa-chacha20-poly1305','psk-aes128-cbc-sha','psk-aes128-cbc-sha256','psk-aes128-gcm-sha256','psk-aes256-cbc-sha','psk-aes256-cbc-sha384','psk-aes256-gcm-sha384','psk-chacha20-poly1305','rsa-psk-aes128-cbc-sha','rsa-psk-aes128-cbc-sha256','rsa-psk-aes128-gcm-sha256','rsa-psk-aes256-cbc-sha','rsa-psk-aes256-cbc-sha384','rsa-psk-aes256-gcm-sha384','rsa-psk-chacha20-poly1305','srp-aes-128-cbc-sha','srp-aes-256-cbc-sha','srp-rsa-aes-128-cbc-sha','srp-rsa-aes-256-cbc-sha','tls_aes_128_ccm_8_sha256','tls_aes_128_ccm_sha256','tls_aes_128_gcm_sha256','tls_aes_256_gcm_sha384','tls_chacha20_poly1305_sha256'
                ].join(':').toupperCase();

console.log('here ',sslConfig.minimumTLsversion)
    
serverOptions = {
    ca:fs.readFileSync(  './ca.pem'),key: fs.readFileSync( './key.pem'),cert: fs.readFileSync('./cert.pem'),honorCipherOrder: true,ciphers:ciphers_new,};


server = https.createServer(serverOptions,app);
    const handler = (req,res)=>{
        res.writeHead(200,{'Content-Type': 'text/plain'});
        res.end('Hello World\n');   
    }

server.addListener("request",handler);


const wss = new WebSocket.Server({ server,handleProtocols: (protocols,client) => {
    return protocol;
} });

wss.on('connection',(ws) => {
  wsCount++;
  ws.send('give_cookie');

  ws.on('close',() => {
    wsCount--;
  })
})

wss.on('close',(e)=>{
    console.log('here we close')
})




server.listen(port,() => {
    console.log(`Server is listening on port:${port}`);
});
  

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)