Javascript NodeJ和WebSocket无法构造“WebSocket”:子目录“[object]”无效

Javascript NodeJ和WebSocket无法构造“WebSocket”:子目录“[object]”无效,javascript,node.js,websocket,Javascript,Node.js,Websocket,因此,我的主要网页example.com是通过cloudflare运行的,它有一个来自Origin->CF edge Origin cert的边缘证书和一个来自CF edge->Client的边缘证书。我通过使用子域dt.example.com绕过websocket,该子域使用cloudflare,尽管使用此链接可以解析源服务器地址,而不是我发现的cloudflare边缘服务器地址解决了一些问题,或者使用此方法可能会适得其反?。无论如何,我正在使用免费的ssl证书来保护WebSocket- "

因此,我的主要网页example.com是通过cloudflare运行的,它有一个来自Origin->CF edge Origin cert的边缘证书和一个来自CF edge->Client的边缘证书。我通过使用子域dt.example.com绕过websocket,该子域使用cloudflare,尽管使用此链接可以解析源服务器地址,而不是我发现的cloudflare边缘服务器地址解决了一些问题,或者使用此方法可能会适得其反?。无论如何,我正在使用免费的ssl证书来保护WebSocket-

"严格使用",; var https=需要“https”; var fs=要求“fs”; var express=需要“express”; var WebSocket=require'ws'; var server=https.createServer{ 证书:fs.readFileSync'../ssl/wss/new/certificate.crt', key:fs.readFileSync'../ssl/wss/new/private.pem', ca:fs.readFileSync'../ssl/wss/new/ca_bundle.crt' }; const wss=new WebSocket.Server{Server}; wss.on'connection',function connection-ws{ ws.on'message',function message msg{ console.logmsg; }; }; server.listen58443,函数侦听{ const ws=新的WebSocket'wss://dt.example.com:58443', { 拒绝:错误 }; ws.on'open',函数open{ ws.发送“Workin baby”; };
}; 我在一篇博文中偶然发现了一些有趣的东西,成功地解决了这个问题。
基本上,我只是将rejectUnauthorized移到服务器代码中,然后在客户端上重试运行,然后它连接到服务器:

因此,有两种方法可以做到这一点,我将列出这两种方法,以获取您可以访问的更多信息

使用W3CWebSocket

使用普通websocket客户端


您可以通过使用key=Sec WebSocket protocol将前端的相应协议值添加到后端的响应头来解决此问题。
在您的情况下,您应该添加一个带有密钥Sec WebSocket协议和值Chat-1.0的HTTP头,尝试其中任何一个都不能在客户端上工作,因为无法识别需要。你将如何解决这个问题?不管怎样,我发现这是一个服务器到服务器的通信应用程序。你是否使用npm I-save websocket将websocket安装到服务器目录中?是的,尽管在浏览器中这不起作用,但不被视为一种功能,但是,编辑代码的工作原理是:var client=new window.WebSocket'wss://dt.example.com:58443/'; ...最初的问题标记为JavaScript和node.js,而不是Java。答案应该是JavaScript。
var ws= require('websocket').w3cwebsocket;

var client = new W3CWebSocket('wss://dt.example.com:58443/'{
    rejectUnauthorized: false
}, 'echo-protocol');

client.onerror = function() {
    console.log('Connection Error');
};C

client.onopen = function open () {
ws.send('What\'s crackin mate?');
};

client.onclose = function() {
    console.log('echo-protocol Client Closed');
};

client.onmessage = function(e) {
    if (typeof e.data === 'string') {
        console.log("Received: '" + e.data + "'");
    }
};
var WebSocketClient = require('websocket').client;

var client = new WebSocketClient();

client.on('connectFailed', function(error) {
    console.log('Connect Error: ' + error.toString());
});

client.on('connect', function(connection) {
    console.log('WebSocket Client Connected');
    connection.on('error', function(error) {
        console.log("Connection Error: " + error.toString());
    });
    connection.on('close', function() {
        console.log('echo-protocol Connection Closed');
    });
    connection.on('message', function(message) {
        if (message.type === 'utf8') {
            console.log("Received: '" + message.utf8Data + "'");
        }
    });

});

client.connect('ws://localhost:8080/', 'echo-protocol');