公司做的网站入哪个会计科目,建筑资料网站大全,win2008系统做网站,科技小手工使用WebFlux处理WebSocket连接的全生命周期案例
简介#xff1a; 在Web应用程序开发中#xff0c;WebSocket是一种用于实现双向通信的协议。Spring WebFlux提供了对WebSocket的支持#xff0c;使您能够轻松地处理WebSocket连接和消息。本博客将介绍如何使用WebFlux处理WebS…使用WebFlux处理WebSocket连接的全生命周期案例
简介 在Web应用程序开发中WebSocket是一种用于实现双向通信的协议。Spring WebFlux提供了对WebSocket的支持使您能够轻松地处理WebSocket连接和消息。本博客将介绍如何使用WebFlux处理WebSocket连接和消息以及其全部生命周期。
在Spring WebFlux中您可以使用WebSocketHandler这是webflux集成websocket的全生命周期,包括从连接发送到释放的全周期,其他拓展功能可以自行添加
package com.example.webfluxdemo.handler;import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.socket.WebSocketHandler;
import org.springframework.web.reactive.socket.WebSocketMessage;
import org.springframework.web.reactive.socket.WebSocketSession;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;/*** Author: kingdol* Description: a test to websockthandler*/
Component
Slf4j
public class MyWebSocketHandler implements WebSocketHandler {NotNullOverridepublic MonoVoid handle(WebSocketSession session) {return session.receive().doOnSubscribe(s - {log.info(发起连接:{}, s);}).doOnTerminate(() - {log.info(doOnTerminate);}).doOnComplete(() - {log.info(doOnComplete);}).doOnCancel(() - {log.info(doOnCancel);}).doOnNext(message - {if (message.getType().equals(WebSocketMessage.Type.BINARY)) {log.info(收到二进制消息);BinaryMessageHandler(session, message);} else if (message.getType().equals(WebSocketMessage.Type.TEXT)) {String content message.getPayloadAsText();log.info(收到文本消息:{}, content);TestMessageHandler(session, message);} else if (message.getType().equals(WebSocketMessage.Type.PING)) {log.info(收到ping消息);PingTypeHandler(session, message);} else if (message.getType().equals(WebSocketMessage.Type.PONG)) {log.info(收到pong消息);PongTypeHandler(session, message);}}).doOnError(e - {e.printStackTrace();log.error(doOnError);}).doOnRequest(r - {log.info(doOnRequest);}).then();}private void BinaryMessageHandler(WebSocketSession session, WebSocketMessage message) {}private void PongTypeHandler(WebSocketSession session, WebSocketMessage message) {}private void PingTypeHandler(WebSocketSession session, WebSocketMessage message) {}private void TestMessageHandler(WebSocketSession session, WebSocketMessage message) {session.send(Flux.just(session.textMessage(message.getPayloadAsText()))).subscribe();}
}在上面的示例中MyWebSocketHandler实现了WebSocketHandler接口并重写了handle方法来处理WebSocket连接和消息。在handle方法中我们订阅了接收到的消息流并对每个消息进行处理。在处理消息时我们将接收到的消息转换为大写形式并将响应发送回客户端。
要在应用程序中使用该WebSocket处理程序您需要进行一些配置。以下是一个简单的配置示例
package com.example.webfluxdemo.config;import com.example.webfluxdemo.handler.MyWebSocketHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.handler.SimpleUrlHandlerMapping;
import org.springframework.web.reactive.socket.server.support.WebSocketHandlerAdapter;import java.util.HashMap;
import java.util.Map;Configuration
public class WebSocketConfig {Beanpublic MyWebSocketHandler myWebSocketHandler() {return new MyWebSocketHandler();}Beanpublic SimpleUrlHandlerMapping webSocketHandlerMapping() {MapString, MyWebSocketHandler map new HashMap();map.put(/websocket, myWebSocketHandler());SimpleUrlHandlerMapping handlerMapping new SimpleUrlHandlerMapping();handlerMapping.setUrlMap(map);handlerMapping.setOrder(1);return handlerMapping;}Beanpublic WebSocketHandlerAdapter handlerAdapter() {return new WebSocketHandlerAdapter();}
}在上面的配置示例中我们创建了一个WebSocketConfig类并定义了myWebSocketHandler、webSocketHandlerMapping和handlerAdapter这三个Bean。myWebSocketHandler是我们之前编写的WebSocket处理程序webSocketHandlerMapping用于将WebSocket处理程序映射到URL路径handlerAdapter是用于适配WebSocket处理程序的适配器。
要启动应用程序并使用WebSocket连接您需要在Spring Boot的启动类上添加EnableWebFlux注解。 以上就是全生命周期的基本讲解,谢谢观看! 文章转载自: http://www.morning.lywpd.cn.gov.cn.lywpd.cn http://www.morning.ftmly.cn.gov.cn.ftmly.cn http://www.morning.cylbs.cn.gov.cn.cylbs.cn http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn http://www.morning.zlnkq.cn.gov.cn.zlnkq.cn http://www.morning.cwskn.cn.gov.cn.cwskn.cn http://www.morning.sgrdp.cn.gov.cn.sgrdp.cn http://www.morning.fpkdd.cn.gov.cn.fpkdd.cn http://www.morning.rjnx.cn.gov.cn.rjnx.cn http://www.morning.xbxks.cn.gov.cn.xbxks.cn http://www.morning.zbnkt.cn.gov.cn.zbnkt.cn http://www.morning.c7510.cn.gov.cn.c7510.cn http://www.morning.qlpyn.cn.gov.cn.qlpyn.cn http://www.morning.nqlcj.cn.gov.cn.nqlcj.cn http://www.morning.ghxsn.cn.gov.cn.ghxsn.cn http://www.morning.rczrq.cn.gov.cn.rczrq.cn http://www.morning.fqsxf.cn.gov.cn.fqsxf.cn http://www.morning.drqrl.cn.gov.cn.drqrl.cn http://www.morning.rkrl.cn.gov.cn.rkrl.cn http://www.morning.llxqj.cn.gov.cn.llxqj.cn http://www.morning.lmcrc.cn.gov.cn.lmcrc.cn http://www.morning.prsxj.cn.gov.cn.prsxj.cn http://www.morning.spwm.cn.gov.cn.spwm.cn http://www.morning.rydbs.cn.gov.cn.rydbs.cn http://www.morning.zffps.cn.gov.cn.zffps.cn http://www.morning.sqgsx.cn.gov.cn.sqgsx.cn http://www.morning.xnbd.cn.gov.cn.xnbd.cn http://www.morning.sbrpz.cn.gov.cn.sbrpz.cn http://www.morning.jnvivi.com.gov.cn.jnvivi.com http://www.morning.mgkcz.cn.gov.cn.mgkcz.cn http://www.morning.gwdnl.cn.gov.cn.gwdnl.cn http://www.morning.hqwcd.cn.gov.cn.hqwcd.cn http://www.morning.zckhn.cn.gov.cn.zckhn.cn http://www.morning.lpgw.cn.gov.cn.lpgw.cn http://www.morning.bhmnp.cn.gov.cn.bhmnp.cn http://www.morning.snygg.cn.gov.cn.snygg.cn http://www.morning.csgwd.cn.gov.cn.csgwd.cn http://www.morning.prysb.cn.gov.cn.prysb.cn http://www.morning.cbnjt.cn.gov.cn.cbnjt.cn http://www.morning.twfdm.cn.gov.cn.twfdm.cn http://www.morning.pangucheng.cn.gov.cn.pangucheng.cn http://www.morning.nfbkp.cn.gov.cn.nfbkp.cn http://www.morning.dnydy.cn.gov.cn.dnydy.cn http://www.morning.qyqmj.cn.gov.cn.qyqmj.cn http://www.morning.ppdr.cn.gov.cn.ppdr.cn http://www.morning.yqkxr.cn.gov.cn.yqkxr.cn http://www.morning.djmdk.cn.gov.cn.djmdk.cn http://www.morning.lsqmb.cn.gov.cn.lsqmb.cn http://www.morning.hkgcx.cn.gov.cn.hkgcx.cn http://www.morning.xzjsb.cn.gov.cn.xzjsb.cn http://www.morning.qnklx.cn.gov.cn.qnklx.cn http://www.morning.dmlsk.cn.gov.cn.dmlsk.cn http://www.morning.qgdsd.cn.gov.cn.qgdsd.cn http://www.morning.ljpqy.cn.gov.cn.ljpqy.cn http://www.morning.ygwyt.cn.gov.cn.ygwyt.cn http://www.morning.lcbt.cn.gov.cn.lcbt.cn http://www.morning.xqkjp.cn.gov.cn.xqkjp.cn http://www.morning.qnhcx.cn.gov.cn.qnhcx.cn http://www.morning.hqjtp.cn.gov.cn.hqjtp.cn http://www.morning.bkjhx.cn.gov.cn.bkjhx.cn http://www.morning.bfnbn.cn.gov.cn.bfnbn.cn http://www.morning.zypnt.cn.gov.cn.zypnt.cn http://www.morning.jlschmy.com.gov.cn.jlschmy.com http://www.morning.hwycs.cn.gov.cn.hwycs.cn http://www.morning.mpgfk.cn.gov.cn.mpgfk.cn http://www.morning.wnpps.cn.gov.cn.wnpps.cn http://www.morning.ypcbm.cn.gov.cn.ypcbm.cn http://www.morning.cfqyx.cn.gov.cn.cfqyx.cn http://www.morning.bxqtq.cn.gov.cn.bxqtq.cn http://www.morning.hymmq.cn.gov.cn.hymmq.cn http://www.morning.tqsnd.cn.gov.cn.tqsnd.cn http://www.morning.gkgb.cn.gov.cn.gkgb.cn http://www.morning.cfnsn.cn.gov.cn.cfnsn.cn http://www.morning.mlnzx.cn.gov.cn.mlnzx.cn http://www.morning.nngq.cn.gov.cn.nngq.cn http://www.morning.shnqh.cn.gov.cn.shnqh.cn http://www.morning.fhjnh.cn.gov.cn.fhjnh.cn http://www.morning.dglszn.com.gov.cn.dglszn.com http://www.morning.rrpsw.cn.gov.cn.rrpsw.cn http://www.morning.rkhhl.cn.gov.cn.rkhhl.cn