http长连接实例
时间: 2023-08-02 07:12:22 浏览: 39
一个常见的 HTTP 长连接的示例是浏览器与服务器之间的长轮询(Long Polling)。在这种情况下,浏览器向服务器发送一个 HTTP 请求,而服务器不会立即返回响应,而是保持连接打开,直到有新的数据可用或连接超时。如果有新的数据可用,服务器将响应发送给浏览器,然后浏览器再次发送请求,以维持连接。这种方法可以用于实时聊天、实时消息更新等场景。以下是一个使用 Node.js 和 Express 框架实现的长轮询示例:
```
const express = require('express');
const app = express();
app.get('/messages', function(req, res) {
// 设置超时时间为 60 秒
const timeout = 60000;
// 定义函数,用于发送响应
function sendResponse(messages) {
res.json(messages);
}
// 定义函数,用于监听新消息
function listenForMessages() {
// 模拟新消息的到达
setTimeout(function() {
sendResponse([
{ id: 1, text: 'Hello!' },
{ id: 2, text: 'How are you?' }
]);
}, 5000);
}
// 发送初始响应
sendResponse([]);
// 开始监听新消息
listenForMessages();
});
app.listen(3000, function() {
console.log('Server listening on port 3000.');
});
```
在这个示例中,浏览器可以通过向 `/messages` 路由发送 GET 请求来获取消息。服务器定义了 `sendResponse` 函数用于发送响应,`listenForMessages` 函数用于模拟新消息的到达。服务器在初始请求时发送一个空数组作为响应,然后开始监听新消息。当有新消息到达时,服务器将发送响应并再次开始监听新消息。如果连接超时,浏览器将再次发送请求,以保持连接。