Spring Boot 与 nodejs websocket 通信

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 与 nodejs websocket 通信相关的知识,希望对你有一定的参考价值。

参考技术A 开发中突然遇到一个需求,后端分别为Spring Boot rest服务,nodejs websocket 服务。
SpringBoot 服务需要往websocket服务发送消息,所以java服务作为socket 客户端,nodejs为socket服务端。

网上好多案例都是以java作为服务端,后来发现socket.io已经提供了java实现,只需要引入jar包,使用方式与js客户端基本类似。将实现贴出来,以供参考。

socket服务端:nodejs socket.io http
socket服务端:Spring Boot socket.io-client

java 引入socket.io-client:
compile group: 'io.socket', name: 'socket.io-client', version: '1.0.0'
创建SocketClientService

其他需要发消息的地方只需要注入SocketClientService 即可。
其他需要接受消息的地方暂时没需求,所以没有实现。

Spring-Boot学习纪要-4:Spring-Boot与Web开发

  spring-boot-starter-web的引用依赖情况如下:

  

 

   

 

 

  从图中可以看出spring-boot-starter-web已经引入spring-mvc和内嵌的tomcat,基本的使用并不难,这部分主要在于看源码。源码阅读后面另起随笔。

  其余基本的使用要点为:

  1.静态资源映射路径,从WebMvcAutoConfiguration源码中可得,首先支持webjars的引入方式(比如jquery的webjar),除此之外,静态资源映射路径读取WebMvcProperties.staticPathPattern,默认为/**;另外支持扫描 "classpath:/META-INF/resources/","classpath:/resources/", "classpath:/static/", "classpath:/public/"

  2.支持ResourceProperties对于资源的统一配置

  3.静态资源下的index.html被识别成欢迎页,被/**映射

  4.**/favicon.ico都是在静态资源下找的

  5.支持模板引擎JSP、Thymeleaf、Velocity、Freemarker,但是都需要引入对应的starter包(包括JSP,也并非默认就支持,需要引入包)

  6.可以通过实现WebMvcConfigurerAdapter来拓展Spring-MVC的配置。标注@EnableWebMvc时表示全面接管自动配置,不标注时只是拓展

  7.Spring自动配置中很多地方都采用了@Configuration的拓展标签,在用户自定义组件不存在时才启用自动配置对应的组件来配置,这块需要多关注于源码;另外,大部分组件提供了xxxConfigurer来帮忙进行拓展配置,xxxCustomizer帮助进行定制配置

     8.国际化,使用ResourceBundleMessageSource管理国际化资源文件,在页面使用fmt:message取国际化内容。本地可以通过自己注册LocalResolver组件完成自定义的国际化规则。

  9.本地依旧可以通过实现HandlerInterceptor注册自己的拦截器。不过需要注册自定义拦截器(通常是通过注册一个WebMvcConfigurerAdapter组件来完成注册)

  10.默认用ErrorMvcAutoConfiguration注册错误处理器

  11.对外提供ServerProperties来做一些属性的配置容器

  12.因为内嵌了tomcat包,所以默认就支持做Servlet的注册

  13.嵌入式的Servlet容器应该打成jar,便捷简单但是默认不支持JSP

  14.使用外置Servlet时,应该选定打war包,手动引入tomcat依赖,另外需要实现SpringBootServletInitializer

 

  

以上是关于Spring Boot 与 nodejs websocket 通信的主要内容,如果未能解决你的问题,请参考以下文章

spring-boot-starter-tomcat 与 spring-boot-starter-web

Spring-Boot学习纪要-4:Spring-Boot与Web开发

Spring boot与Jackson ObjectMapper

ajax与spring boot web联调

Ktor 与 Spring Boot WebFlux web api

Spring Boot学习笔记之一:传统maven项目与采用spring boot项目区别