SseEmitter (Spring)
Spring Frameworkμμ SseEmitterλ μλ²μμ ν΄λΌμ΄μΈνΈλ‘ Server-Sent Events(SSE)λ₯Ό 보λ΄κΈ° μν κ°μ²΄μ
λλ€. μλ²μμ ν΄λΌμ΄μΈνΈλ‘ μ€μκ° μ
λ°μ΄νΈλ₯Ό μ μ‘νλ λ° μ¬μ©λλ μλ² μ μ‘ μ΄λ²€νΈ(Server-Sent Events, SSE)λ₯Ό 보λ΄κΈ° μν ResponseBodyEmitterμ νΉμ λ²μ μ΄λ€.
μ½λ μμ½
μλ΅ νμ₯:
extendResponse(ServerHttpResponse outputMessage):ResponseBodyEmitterμμ μ€λ²λΌμ΄λν λ©μλλ‘ SSEμ λ§κ² μλ² μλ΅μ 컀μ€ν°λ§μ΄μ¦ν©λλ€.Content-Typeμtext/event-streamμΌλ‘ μ€μ ν©λλ€(λ§μ½ μμ§ μ€μ λμ§ μμλ€λ©΄).
μ΄λ²€νΈ λ°μ‘:
send(Object object): κ°μ²΄λ₯Ό λ¨μΌ SSE "data" λΌμΈμΌλ‘ μ μ‘ν©λλ€.send(Object object, @Nullable MediaType mediaType): μ§μ λMediaTypeμ κ°μ§ κ°μ²΄λ₯Ό μ μ‘νμ¬ λ©μμ§ μ»¨λ²ν° μ ν μ 컨ν μΈ νμμ κ°λ₯νκ² ν©λλ€.send(SseEventBuilder builder): id, μ΄λ²€νΈ μ΄λ¦, μ½λ©νΈ λ°/λλ μ¬μ°κ²° μκ°κ³Ό λ°μ΄ν°λ₯Ό ν¬ν¨νλ 볡μ‘ν SSE μ΄λ²€νΈλ₯Ό μ μ‘ν μ μμ΅λλ€.
μ΄λ²€νΈ λΉλ©:
event():SseEventBuilderImplμΈμ€ν΄μ€λ₯Ό λ°ννλ μ μ λ©μλμ λλ€.SseEventBuilderImplμ λ΄λΆ ν΄λμ€λ‘SseEventBuilderμΈν°νμ΄μ€λ₯Ό ꡬνν©λλ€.
SseEventBuilder:
SseEmitterν΄λμ€ λ΄λΆμ μΈν°νμ΄μ€λ‘, SSE μ΄λ²€νΈλ₯Ό ꡬμΆνκΈ° μν λ©μλλ₯Ό μ μν©λλ€. μλ₯Ό λ€μ΄id,name,reconnectTime,comment,dataλ±μ λ©μλκ° μμ΅λλ€.
SseEventBuilderImpl:
SseEventBuilderμΈν°νμ΄μ€λ₯Ό ꡬννλ λ΄λΆ private static ν΄λμ€μ λλ€. SSE νμμ λ¬Έμμ΄μ ꡬμ±νκΈ° μν΄StringBuilderλ₯Ό μ¬μ©νκ³ μ μ‘ν λ°μ΄ν°λ₯Ό λ΄λSet<DataWithMediaType>λ₯Ό μ¬μ©ν©λλ€.
DataWithMediaType:
μ μ‘λ κ°μ²΄μ κ·Έ
MediaTypeμ μ°κ΄μν€λ κ°λ¨ν 컨ν μ΄λ ν΄λμ€λ‘ 보μ λλ€. λ΄λΆμ μΌλ‘SseEventBuilderImplμ μν΄ μ¬μ©λ©λλ€.
send(SseEventBuilder builder) λ©μλμμ synchronizedλ₯Ό μ¬μ©νλ κ²μ λ°μ΄ν°κ° μ€λ λ μμ ν λ°©μμΌλ‘ μ μ‘λλλ‘ λ³΄μ₯ν©λλ€. μλ² μ μ‘ μ΄λ²€νΈλ μΌλ°μ μΌλ‘ μλ²κ° μ€μκ°μΌλ‘ μ
λ°μ΄νΈλ₯Ό ν΄λΌμ΄μΈνΈ λΈλΌμ°μ λ‘ νΈμν΄μΌ νλ μ ν리μΌμ΄μ
, μλ₯Ό λ€μ΄ λμ보λ λλ μ€μκ°μΌλ‘ μ
λ°μ΄νΈλλ νΌλμμ μ¬μ©λ©λλ€.
μμ
Last updated