response
{http.IncomingMessage}socket
{stream.Duplex}head
{Buffer}
每次服务器响应升级请求时发出。
如果未监听此事件且响应状态码为 101 Switching Protocols
,则接收升级响应头的客户端将关闭其连接。
此事件保证传入 {net.Socket} 类({stream.Duplex} 的子类)的实例,除非用户指定了 {net.Socket} 以外的套接字类型。
客户端服务器对,演示如何监听 'upgrade'
事件。
const http = require('http');
// 创建 HTTP 服务器。
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('响应内容');
});
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); // 响应回去。
});
// 服务器正在运行。
server.listen(1337, '127.0.0.1', () => {
// 发送请求。
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('接收到响应');
socket.end();
process.exit(0);
});
});