當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Node.js http.ClientRequest 'upgrade'事件用法及代碼示例

事件:'upgrade'

添加於:v0.1.94

參數

每次服務器響應升級請求時發出。如果未偵聽此事件且響應狀態代碼為 101 Switching Protocols,則接收到升級標頭的客戶端將關閉其連接。

除非用戶指定 <net.Socket> 以外的套接字類型,否則此事件保證會傳遞 <net.Socket> 類的實例,該類是 <stream.Duplex> 的子類。

演示如何偵聽 'upgrade' 事件的客戶端服務器對。

const http = require('node:http');

// Create an HTTP server
const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('okay');
});
server.on('upgrade', (req, socket, head) => {
  socket.write('HTTP/1.1 101 Web Socket Protocol Handshake\r\n' +
               'Upgrade: WebSocket\r\n' +
               'Connection: Upgrade\r\n' +
               '\r\n');

  socket.pipe(socket); // echo back
});

// Now that server is running
server.listen(1337, '127.0.0.1', () => {

  // make a request
  const options = {
    port: 1337,
    host: '127.0.0.1',
    headers: {
      'Connection': 'Upgrade',
      'Upgrade': 'websocket'
    }
  };

  const req = http.request(options);
  req.end();

  req.on('upgrade', (res, socket, upgradeHead) => {
    console.log('got upgraded!');
    socket.end();
    process.exit(0);
  });
});

相關用法


注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品  'upgrade'事件。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。