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
Was this helpful?