如何用HTTP实现长连接?

首先http中,没有长连接这样的类型。
http要实现长连接,是建立在tcp协议的基础上的。
一个http连接,等到不再需要该连接的时候,主动调用该连接的close()方法,才会关闭该连接。

HTTP短连接:

客户端和服务端进行一次HTTP请求/响应之后,就关闭连接。下一次的HTTP请求/响应操作需要重新建立。
在首部字段中设置Connection:close,则在一次请求/响应之后,就会关闭连接。

HTTP长连接:

客户端和服务端建立一次连接之后,可以在这条连接上进行多次请求/响应操作。
持久连接可以设置过期时间,也可以不设置。
在首部字段中设置Connection:keep-alive 和 Keep-Alive:timeout = 60,
表明连接建立之后,空闲时间超过60秒,连接失效。
如果在空闲第58秒使用此连接,则仍然有效,
并且使用完之后,重新计数空闲时间,空闲60秒无再使用,连接失效。
设置HTTP长连接,无过期时间,在首部字段中只设置Connection:keep-alive,表明连接永久有效。

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。
实现长连接要客户端和服务端都支持长连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 与 Vue.js 联合使用,可以通过 WebSocket 实现 HTTP 长连接。下面是一个使用 Spring Boot 和 Vue.js 实现 HTTP 长连接的示例: 1. 首先,我们需要在 Spring Boot 中添加 WebSocket 支持。可以通过添加 `spring-boot-starter-websocket` 依赖来实现: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` 2. 接下来,我们需要创建一个 WebSocket 配置类,用于配置 WebSocket 相关的参数。可以使用 `@Configuration` 和 `@EnableWebSocket` 注解来实现: ``` @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new WebSocketHandler(), "/websocket").setAllowedOrigins("*"); } } ``` 在上面的代码中,我们创建了一个 `WebSocketHandler` 类来处理 WebSocket 连接请求。该类需要实现 `WebSocketHandler` 接口,并实现 `handleTextMessage` 方法来处理文本消息。我们还使用 `setAllowedOrigins("*")` 方法来允许任何来源的 WebSocket 连接。 3. 在前端,我们可以使用 Vue.js 和 `vue-native-websocket` 库来实现 WebSocket 连接。可以通过以下命令来安装 `vue-native-websocket` 库: ``` npm install vue-native-websocket --save ``` 4. 在 Vue.js 中,我们需要创建一个 WebSocket 实例,并使用 `vue-native-websocket` 库来连接到服务器。可以使用以下代码: ``` import VueNativeSock from 'vue-native-websocket' Vue.use(VueNativeSock, 'ws://localhost:8080/websocket', { format: 'json', reconnection: true, reconnectionAttempts: 5, reconnectionDelay: 3000, }) ``` 在上面的代码中,我们创建了一个 WebSocket 实例,并使用 `ws://localhost:8080/websocket` 作为 WebSocket 服务器的地址。我们还定义了一些选项,如消息格式、自动重连等。 5. 最后,在 Vue.js 中,我们可以使用 `mounted` 钩子来监听 WebSocket 连接。可以使用以下代码: ``` mounted() { this.$options.sockets.message = (message) => { console.log(message) } } ``` 在上面的代码中,我们使用 `this.$options.sockets.message` 来监听 WebSocket 消息。当有新消息到达时,我们将在控制台中输出消息。 通过上述步骤,我们可以实现 Spring Boot 和 Vue.js 之间的 HTTP 长连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值