【http】http推送与websocket推送

http推送与websocket推送

相关文章

http推送与websocket推送


一、HTTP/2推送:

  • HTTP/2推送是基于HTTP/2协议的一种机制,它允许服务器在响应请求时主动向客户端推送额外的资源。

  • 客户端发起一个请求,服务器不仅会返回请求的响应,还会额外推送一些相关资源,这些资源可能是客户端之后需要的,从而减少了客户端发起请求的次数,提高了性能。

  • HTTP/2推送依赖于HTTP/2协议的多路复用(Multiplexing)和头部压缩(Header Compression)等特性,因此能够有效减少网络延迟。

  • HTTP/2推送适用于静态资源的提前推送,例如HTML页面中引用的CSS、JavaScript、图像等资源。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const http2 = require('http2');
const fs = require('fs');

// 创建HTTP/2服务器
const server = http2.createSecureServer({
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.crt')
});

// 处理请求
server.on('request', (req, res) => {
// 发送HTML页面
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<html><head><title>HTTP/2 Push Demo</title></head><body><h1>HTTP/2 Push Demo</h1></body></html>');

// 推送CSS文件
const stream = res.push('/style.css', {
status: 200,
method: 'GET',
request: {
accept: '*/*'
},
response: {
'content-type': 'text/css'
}
});
stream.end('.header { font-size: 20px; }'); // 实际CSS内容
});

// 监听端口
server.listen(3000, () => {
console.log('Server is running on port 3000');
});

在这个示例中,我们创建了一个HTTP/2服务器,并为根路径的请求返回一个简单的HTML页面。同时,我们使用res.push()方法推送了一个CSS文件。

二、WebSocket推送:

  • WebSocket是一种独立的协议,它建立在TCP上,旨在在客户端和服务器之间实现全双工通信。

  • WebSocket允许客户端和服务器之间建立长期的连接,并在连接建立后通过双向通信实时地传输数据。

  • 客户端和服务器可以随时向对方发送数据,无需等待对方的请求。

  • WebSocket推送适用于需要实时双向通信的应用场景,例如在线聊天、实时游戏、实时股票行情等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const WebSocket = require('ws');

// 创建WebSocket服务器
const wss = new WebSocket.Server({ port: 8080 });

// 监听连接
wss.on('connection', function connection(ws) {
console.log('Client connected');

// 每隔1秒向客户端发送一条消息
const interval = setInterval(() => {
ws.send('WebSocket Push Example Message');
}, 1000);

// 监听客户端关闭连接事件
ws.on('close', function() {
console.log('Client disconnected');
clearInterval(interval);
});
});

console.log('WebSocket server is running on port 8080');

在这个示例中,我们创建了一个WebSocket服务器,并监听连接事件。每隔1秒,服务器会向连接的客户端发送一条消息。当客户端关闭连接时,服务器会停止发送消息。


喜欢这篇文章?打赏一下支持一下作者吧!
【http】http推送与websocket推送
https://www.cccccl.com/20220505/http/http推送与websocket推送/
作者
Jeffrey
发布于
2022年5月5日
许可协议