Spring Boot
2025-08-12 11:57阅读:159评论:0
解决Spring boot SseEmitter 推送数据客户端乱码问题
方式一 创建全局 SSE 专用的转换器 方式二 继承 SseEmitter 重写extendResponse,请求头事件流指定utf-8编码 SseEmitter sseEmitter = new SseEmitter() 改为 SseEmitter sseEmitter = new SseEmit
_PROTECTED0__
- 创建全局 SSE 专用的转换器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Bean public HttpMessageConverters fastJsonHttpMessageConverters() { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); // .... // 创建 SSE 专用的转换器 StringHttpMessageConverter stringConverter = new StringHttpMessageConverter(StandardCharsets.UTF_8); stringConverter.setSupportedMediaTypes(Arrays.asList( MediaType.TEXT_EVENT_STREAM, MediaType.TEXT_PLAIN )); return new HttpMessageConverters(jackson2HttpMessageConverter, stringConverter); } _PROTECTED1_PROTECTED2_PROTECTED0__ 重写extendResponse,请求头事件流指定utf-8编码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class SseEmitterUTF8 extends SseEmitter { public SseEmitterUTF8() { super(); } public SseEmitterUTF8(Long timeout) { super(timeout); } @Override protected void extendResponse(ServerHttpResponse outputMessage) { super.extendResponse(outputMessage); HttpHeaders headers = outputMessage.getHeaders(); headers.setContentType(new MediaType(MediaType.TEXT_EVENT_STREAM, StandardCharsets.UTF_8)); }} - ___PROTECTED_3__0___PROTECTED_4__2___PROTECTED_5__1__