Javascript 如何修复节点js中的错误Invalid Sec WebSocket Accept标头?

Javascript 如何修复节点js中的错误Invalid Sec WebSocket Accept标头?,javascript,node.js,websocket,header,cryptojs,Javascript,Node.js,Websocket,Header,Cryptojs,我正在尝试在NodeJS中创建客户端websocket。websocket服务器正在浏览器(firefox)中运行。下面是代码和错误消息。当它在浏览器中工作时,它在Nodejs中不工作。这是什么原因?我怎样才能解决这个问题 代码(节点JS): const WebSocket = require('ws'); const { randomBytes } = require('crypto'); const headers = { Accept:

我正在尝试在NodeJS中创建客户端websocket。websocket服务器正在浏览器(firefox)中运行。下面是代码和错误消息。当它在浏览器中工作时,它在Nodejs中不工作。这是什么原因?我怎样才能解决这个问题

代码(节点JS):

    const WebSocket = require('ws');
    const { randomBytes } = require('crypto');
        const headers = {
          Accept: '*/*',
          'Accept-Encoding': 'gzip, deflate, br',
          'Accept-Language': 'q=0.8,en-US',
          'Cache-Control': 'no-cache',
          Connection: 'keep-alive, Upgrade',
          cookie: 'key=UE2BQmTF;',
          Pragma: 'no-cache',
          'Sec-WebSocket-Extensions': 'permessage-deflate',
          'sec-websocket-key': randomBytes(16).toString('base64'),
          'Sec-WebSocket-Version': '13',
          Upgrade: 'websocket',
          'User-Agent':
            'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0',
        };
 ws = new WebSocket(wurl, { headers });
  ws.binaryType = 'arraybuffer';
  ws.on('open', () => {
    console.log('connected', Date());
 });

  ws.on('close', () => {
    console.log('disconnected', Date());
  });
Error: Invalid Sec-WebSocket-Accept header
2020-01-25T14:51:57.930773+00:00 app[web.1]: at ClientRequest.<anonymous> (/app/node_modules/ws/lib/websocket.js:603:7)
2020-01-25T14:51:57.930775+00:00 app[web.1]: at ClientRequest.emit (events.js:223:5)
2020-01-25T14:51:57.930778+00:00 app[web.1]: at TLSSocket.socketOnData (_http_client.js:490:11)
2020-01-25T14:51:57.930780+00:00 app[web.1]: at TLSSocket.emit (events.js:223:5)
2020-01-25T14:51:57.930782+00:00 app[web.1]: at addChunk (_stream_readable.js:309:12)
2020-01-25T14:51:57.930785+00:00 app[web.1]: at readableAddChunk (_stream_readable.js:290:11)
2020-01-25T14:51:57.930787+00:00 app[web.1]: at TLSSocket.Readable.push (_stream_readable.js:224:10)
2020-01-25T14:51:57.930789+00:00 app[web.1]: at TLSWrap.onStreamRead (internal/stream_base_commons.js:181:23)
2020-01-25T14:51:57.930791+00:00 app[web.1]: Emitted 'error' event on WebSocket instance at:
2020-01-25T14:51:57.930793+00:00 app[web.1]: at Object.onceWrapper (events.js:313:26)
2020-01-25T14:51:57.930795+00:00 app[web.1]: at TLSSocket.emit (events.js:223:5)
2020-01-25T14:51:57.930797+00:00 app[web.1]: at emitErrorNT (internal/streams/destroy.js:92:8)
2020-01-25T14:51:57.930799+00:00 app[web.1]: at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
2020-01-25T14:51:57.930801+00:00 app[web.1]: at processTicksAndRejections (internal/process/task_queues.js:81:21)
错误:

    const WebSocket = require('ws');
    const { randomBytes } = require('crypto');
        const headers = {
          Accept: '*/*',
          'Accept-Encoding': 'gzip, deflate, br',
          'Accept-Language': 'q=0.8,en-US',
          'Cache-Control': 'no-cache',
          Connection: 'keep-alive, Upgrade',
          cookie: 'key=UE2BQmTF;',
          Pragma: 'no-cache',
          'Sec-WebSocket-Extensions': 'permessage-deflate',
          'sec-websocket-key': randomBytes(16).toString('base64'),
          'Sec-WebSocket-Version': '13',
          Upgrade: 'websocket',
          'User-Agent':
            'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0',
        };
 ws = new WebSocket(wurl, { headers });
  ws.binaryType = 'arraybuffer';
  ws.on('open', () => {
    console.log('connected', Date());
 });

  ws.on('close', () => {
    console.log('disconnected', Date());
  });
Error: Invalid Sec-WebSocket-Accept header
2020-01-25T14:51:57.930773+00:00 app[web.1]: at ClientRequest.<anonymous> (/app/node_modules/ws/lib/websocket.js:603:7)
2020-01-25T14:51:57.930775+00:00 app[web.1]: at ClientRequest.emit (events.js:223:5)
2020-01-25T14:51:57.930778+00:00 app[web.1]: at TLSSocket.socketOnData (_http_client.js:490:11)
2020-01-25T14:51:57.930780+00:00 app[web.1]: at TLSSocket.emit (events.js:223:5)
2020-01-25T14:51:57.930782+00:00 app[web.1]: at addChunk (_stream_readable.js:309:12)
2020-01-25T14:51:57.930785+00:00 app[web.1]: at readableAddChunk (_stream_readable.js:290:11)
2020-01-25T14:51:57.930787+00:00 app[web.1]: at TLSSocket.Readable.push (_stream_readable.js:224:10)
2020-01-25T14:51:57.930789+00:00 app[web.1]: at TLSWrap.onStreamRead (internal/stream_base_commons.js:181:23)
2020-01-25T14:51:57.930791+00:00 app[web.1]: Emitted 'error' event on WebSocket instance at:
2020-01-25T14:51:57.930793+00:00 app[web.1]: at Object.onceWrapper (events.js:313:26)
2020-01-25T14:51:57.930795+00:00 app[web.1]: at TLSSocket.emit (events.js:223:5)
2020-01-25T14:51:57.930797+00:00 app[web.1]: at emitErrorNT (internal/streams/destroy.js:92:8)
2020-01-25T14:51:57.930799+00:00 app[web.1]: at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
2020-01-25T14:51:57.930801+00:00 app[web.1]: at processTicksAndRejections (internal/process/task_queues.js:81:21)
错误:Sec WebSocket接受标头无效
2020-01-25T14:51:57.930773+00:00应用程序[web.1]:在ClientRequest。(/app/node_modules/ws/lib/websocket.js:603:7)
2020-01-25T14:51:57.930775+00:00应用程序[web.1]:位于ClientRequest.emit(events.js:223:5)
2020-01-25T14:51:57.930778+00:00应用程序[网站1]:位于TLSSocket.socketOnData(_http_client.js:490:11)
2020-01-25T14:51:57.930780+00:00应用程序[web.1]:位于TLSSocket.emit(events.js:223:5)
2020-01-25T14:51:57.930782+00:00应用程序[web.1]:在addChunk(_stream_readable.js:309:12)
2020-01-25T14:51:57.930785+00:00应用程序[web.1]:位于readableAddChunk(_stream_readable.js:290:11)
2020-01-25T14:51:57.930787+00:00应用程序[web.1]:位于TLSSocket.Readable.push(_stream_Readable.js:224:10)
2020-01-25T14:51:57.930789+00:00应用程序[web.1]:在TLSWrap.onstreamhead(内部/流基础共享空间js:181:23)
2020-01-25T14:51:57.930791+00:00应用程序[web.1]:在以下位置的WebSocket实例上发出“错误”事件:
2020-01-25T14:51:57.930793+00:00应用程序[web.1]:位于Object.onceWrapper(events.js:313:26)
2020-01-25T14:51:57.930795+00:00应用程序[web.1]:位于TLSSocket.emit(events.js:223:5)
2020-01-25T14:51:57.930797+00:00应用程序[web.1]:在发射错误处(内部/streams/destroy.js:92:8)
2020-01-25T14:51:57.930799+00:00应用程序[web.1]:在发射错误和关闭时(内部/streams/destroy.js:60:3)
2020-01-25T14:51:57.930801+00:00应用程序[web.1]:在处理时遇到问题和拒绝(内部/处理/任务队列.js:81:21)

“sec-websocket-key”由ws自动生成