「这是我参与2022初次更文应战的第27天,活动详情查看:2022初次更文应战」
websocket作为公共服务,尽量抽离业务需求。现websocket作为服务可嵌入使用也可独自布置使用。视详细项目需求 下面就服务端、客户端两端接入说明流程
约好
- dubbo项目框架下需完成以上约好 。 必须按此约好
- controller层数据参数有且仅有一个参数,参数类型=Map
- service层数据参数有且仅有一个参数,参数类型=Map
dubbo接口
- 实际上没有dubbo接口这一说法。为了可以精确定位到dubbo实在的办法。这里简略标准为dubbo接口 。
- com.ay.aoshan.rpcService.CourseSerive 下的getCourse办法 转换成dubbo接口即为 com.ay.aoshan.rpcService.CourseService.getCourse
单服务布置
- 为了迎合分布式架构,websocket讲抽离出单服务供多项目消费。数据交换靠dubbo进行分发。保证数据精确性
- 需求在websocket的pom中参加以下装备进行打包布置至相应环境。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
服务端
项目装备
-
websocket独自布置后,客户端直接连接websocket服务。对第三方项目没有任何交集。唯一需求注意的是第三方项目需求将客户端订阅的接口暴露在nacos服务中。这样websocket才可以获取数据。
-
例 : aoshan项目CourseService下的getFavioutCourse办法需求经过websocket对客户端进行推送数据。
- 首先aoshan项目需求将CourseService暴露在aoshan-interface模块中。
- 然后在aoshan-provider中完成该接口的办法并经过apace.dubbo.service注解将该办法注册到nacos中。
调用mock推送数据
- 推送数据需求将nacos中的WebsocketService服务依靠进来。然后经过WebsocketService.mock办法进行数据推送 。 mock中requesetMapping=dubbo接口
客户端
- 客户端订阅接口和之前结构不同 。 需改为dubbo接口。
- 客户端接收数据的数据结构也会发生变化。详细变化与详细项目接口洽谈 。 最外层的key不变 “messageTime”;”messageQueueID”; “messageData”; “messageCount”;”messageQueue”;
嵌入式布置
- 嵌入式布置需求保证websocket中pom文件没有以下装备
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
服务端
- 与独自布置websocket不同的是,嵌入式布置需求第三方项目参加websocket的依靠
<dependency>
<groupId>com.ay</groupId>
<artifactId>framework-websocket</artifactId>
<version>2.0.1</version>
</dependency>
- 然后在springboot发动类上参加
@WebsocketClient
即可。 - 然后重复上述独自布置websocket中服务端操作相同。
客户端
- 客户端和独自布置websocket操作相同。唯一不同就是地址访问第三方项目地址
协议支撑
- 支撑数据解析的扩展
- 支撑客户端发送特定字符
- 支撑客户端发送resultful接口
- 支撑客户端发送dubbo接口
不支撑
- 点对点通讯
- 群聊