Gateways
Gateways
κ²μ΄νΈμ¨μ΄λ @WebSocketGateway()
λ°μ½λ μ΄ν°λ‘ μ£Όμμ΄ λ¬λ¦° ν΄λμ€μ
λλ€. κ²μ΄νΈμ¨μ΄λ κΈ°λ³Έμ μΌλ‘ socket.io ν¨ν€μ§λ₯Ό μ¬μ©νμ§λ§ κΈ°λ³Έ μΉ μμΌ κ΅¬νμ ν¬ν¨νμ¬ κ΄λ²μν λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬μμ νΈνμ±μ μ 곡ν©λλ€. μ¬κΈ°.
warning ννΈ κ²μ΄νΈμ¨μ΄λ λ¨μν 곡κΈμμ λμΌνκ² μλνλ―λ‘ μμ±μλ₯Ό ν΅ν΄ μμ½κ² μ’ μμ±μ μ£Όμ ν μ μμ΅λλ€. λν κ²μ΄νΈμ¨μ΄λ λ€λ₯Έ ν΄λμ€ (곡κΈμ λ° μ»¨νΈλ‘€λ¬)μ μν΄ μ£Όμ λ μλ μμ΅λλ€.
Installation
λ¨Όμ νμν ν¨ν€μ§λ₯Ό μ€μΉν΄μΌν©λλ€.
Overview
μΌλ°μ μΌλ‘ μ±μ΄ μΉ μμ© νλ‘κ·Έλ¨μ΄ μλκ±°λ μλμΌλ‘ ν¬νΈλ₯Ό λ³κ²½νμ§ μμ κ²½μ° κ° κ²μ΄νΈμ¨μ΄λ HTTP μλ²κ° μ€νλλ κ²κ³Ό λμΌν ν¬νΈλ₯Ό μμ ν©λλ€. @WebSocketGateway(80)
λ°μ½λ μ΄ν°μ μΈμλ₯Ό μ λ¬νμ¬ μ΄ λμμ λ³κ²½ν μ μμ΅λλ€. μ¬κΈ°μ 80
μ μ νλ ν¬νΈ λ²νΈμ
λλ€. λν λ€μ ꡬμ±μΌλ‘ μ΄ κ²μ΄νΈμ¨μ΄μμ μ¬μ©νλ namespaceλ₯Ό μ€μ ν μ μμ΅λλ€.
κ²½κ³ κ²μ΄νΈμ¨μ΄λ
providers
λ°°μ΄ μμ λ£μ λκΉμ§ μμλμ§ μμ΅λλ€.
λ€μ μ€νμ΄μ€
λ μ μΌνκ² μ¬μ© κ°λ₯ν μ΅μ
μ΄ μλλλ€. μ¬κΈ°μ μΈκΈλ λ€λ₯Έ μμ±μ μ λ¬ν μ μμ΅λλ€. μ΄λ¬ν μμ±μ μΈμ€ν΄μ€ν νλ‘μΈμ€ λμ μμΌ μμ±μλ‘ μ λ¬λ©λλ€.
μ’μ, κ²μ΄νΈμ¨μ΄λ μ§κΈ λ£κ³ μμ§λ§ μ°λ¦¬λ μ§κΈκΉμ§ λ€μ΄μ€λ λ©μμ§λ₯Ό subscriptνμ§ μμ΅λλ€. events
λ©μμ§λ₯Ό subscriptionνκ³ λκ°μ λ°μ΄ν°λ‘ μ¬μ©μμκ² μλ΅νλ νΈλ€λ¬λ₯Ό λ§λ€μ΄ λ΄
μλ€.
info ννΈ
@SubscribeMessage()
λ°μ½λ μ΄ν°λ@nestjs/websockets
ν¨ν€μ§μμ κ°μ Έμ΅λλ€.
handleEvent()
ν¨μλ λ κ°μ μΈμλ₯Ό μ·¨ν©λλ€. 첫λ²μ§Έλ νλ«νΌ λ³ μμΌ μΈμ€ν΄μ€μ΄κ³ λ λ²μ§Έλ ν΄λΌμ΄μΈνΈμμ λ°μ λ°μ΄ν°μ
λλ€. λ©μμ§λ₯Ό λ°μΌλ©΄ λκ΅°κ°κ° λ€νΈμν¬λ₯Ό ν΅ν΄ λ³΄λΈ κ²κ³Ό λμΌν λ°μ΄ν°λ‘ μΉμΈμ 보λ
λλ€. λν λΌμ΄λΈλ¬λ¦¬ λ³ μ κ·Ό λ°©μμ μ¬μ©νμ¬, μλ₯Ό λ€μ΄ client.emit()
λ©μλλ₯Ό μ¬μ©νμ¬ λ©μμ§λ₯Ό μμ±ν μ μμ΅λλ€. κ·Έλ¬λ μ΄ κ²½μ° μΈν°μ
ν°λ₯Ό μ¬μ©ν μ μμ΅λλ€. μ¬μ©μμκ² μλ΅νμ§ μμΌλ €λ©΄ μ무 κ²λ λ°ννμ§ λ§μμμ€ (λλ "μ μλμ§ μμ"κ³Ό κ°μ΄ "κ±°μ§"κ°μ λͺ
μμ μΌλ‘ λ°ν).
μ΄μ ν΄λΌμ΄μΈνΈκ° λ€μκ³Ό κ°μ λ°©μμΌλ‘ λ©μμ§λ₯Ό λ³΄λΌ λ
handleEvent()
λ©μλκ° μ€νλ©λλ€. μ νΈλ€λ¬ λ΄μμ μμ±λ λ©μμ§λ₯Ό λ€μΌλ €λ©΄ ν΄λΌμ΄μΈνΈκ° ν΄λΉ μΉμΈ 리μ€λλ₯Ό 첨λΆν΄μΌν©λλ€.
Multiple responses
μΉμΈμ νλ²λ§ λ°μ‘λ©λλ€. λν κΈ°λ³Έ WebSockets ꡬνμμλ μ§μλμ§ μμ΅λλ€. μ΄ μ νμ ν΄κ²°νκΈ° μν΄ λ κ°μ§ μμ±μΌλ‘ ꡬμ±λ κ°μ²΄λ₯Ό λ°νν μ μμ΅λλ€. μμ±λ μ΄λ²€νΈμ μ΄λ¦μΈ event
μ ν΄λΌμ΄μΈνΈμ μ λ¬ν΄μΌ νλ data
μ
λλ€.
info ννΈ
WsResponse
μΈν°νμ΄μ€λ@nestjs/websockets
ν¨ν€μ§μμ κ°μ Έμ΅λλ€.
λ€μ΄μ€λ μλ΅μ λ€μΌλ €λ©΄ ν΄λΌμ΄μΈνΈκ° λ€λ₯Έ μ΄λ²€νΈ 리μ€λλ₯Ό μ μ©ν΄μΌν©λλ€.
Asynchronous responses
κ° λ©μμ§ νΈλ€λ¬λ λκΈ°μ λλ λΉλκΈ°μ (async
) μΌ μ μμΌλ―λ‘ Promise
λ₯Ό λ°νν μ μμ΅λλ€. λν Observableμ λ°ν ν μ μμ΅λλ€. μ¦, μ¬λ¬ κ°μ λ°νν μ μμ΅λλ€ (μ€νΈλ¦Όμ΄ μλ£ λ λκΉμ§ λ°©μΆ λ¨).
μμ λ©μμ§ μ²λ¦¬κΈ°λ 3 λ² (μμλλ‘ response
λ°°μ΄μ κ° νλͺ©κ³Ό ν¨κ») μλ΅ν©λλ€.
Lifecycle hooks
3 κ°μ§ μ μ©ν μλͺ μ£ΌκΈ° νν¬κ° μμ΅λλ€. λͺ¨λ ν΄λΉ μΈν°νμ΄μ€κ° μμΌλ©° λ€μ νμ μ€λͺ λμ΄ μμ΅λλ€.
OnGatewayInit
afterInit()
λ©μλλ₯Ό κ°μ λ‘ κ΅¬νν©λλ€. λΌμ΄λΈλ¬λ¦¬ νΉμ μλ² μΈμ€ν΄μ€λ₯Ό μΈμλ‘ μ¬μ©ν©λλ€. (νμν κ²½μ° λλ¨Έμ§λ₯Ό νμ°μν΅λλ€).
OnGatewayConnection
handleConnection()
λ©μλλ₯Ό κ°μ λ‘ κ΅¬νν©λλ€. λΌμ΄λΈλ¬λ¦¬ νΉμ ν΄λΌμ΄μΈνΈ μμΌ μΈμ€ν΄μ€λ₯Ό μΈμλ‘ μ¬μ©ν©λλ€.
OnGatewayDisconnect
handleDisconnect()
λ©μλλ₯Ό κ°μ λ‘ κ΅¬νν©λλ€. λΌμ΄λΈλ¬λ¦¬ νΉμ ν΄λΌμ΄μΈνΈ μμΌ μΈμ€ν΄μ€λ₯Ό μΈμλ‘ μ¬μ©ν©λλ€.
info ννΈ κ° λΌμ΄ν μ¬μ΄ν΄ μΈν°νμ΄μ€λ
@nestjs/websockets
ν¨ν€μ§μμ 곡κ°λ©λλ€.
Server
κ²½μ°μ λ°λΌ νλ«νΌ λ³ κΈ°λ³Έ μλ² μΈμ€ν΄μ€μ μ§μ μ‘μΈμ€ ν μ μμ΅λλ€. μ΄ κ°μ²΄μ λν μ°Έμ‘°λ afterInit()
λ©μλ (OnGatewayInit
μΈν°νμ΄μ€)μ μΈμλ‘ μ λ¬λ©λλ€. λ λ²μ§Έ λ°©λ²μ @WebSocketServer()
λ°μ½λ μ΄ν°λ₯Ό μ¬μ©νλ κ²μ
λλ€.
warning μλ¦Ό
@WebSocketServer()
λ°μ½λ μ΄ν°λ@nestjs/websockets
ν¨ν€μ§μμ κ°μ Έμ΅λλ€.
Nestλ μ¬μ©ν μ€λΉκ° λλ©΄ μλ² μΈμ€ν΄μ€λ₯Ό μ΄ μμ±μ μλμΌλ‘ ν λΉν©λλ€.
Example
μ€μ μ¬λ‘λ μ¬κΈ°μμ νμΈν μ μμ΅λλ€.
Last updated
Was this helpful?