基于websocket如何实现接口订阅,使用这个sdk就完事了

「这是我参与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接口

不支撑

  • 点对点通讯
  • 群聊