π javascript socket onopen
νλ‘ νΈμ λ°±μλ κ°λ¨ν λ©μΈμ§ μ μ‘ ν μ€νΈ μ€Uncaught InvalidStateError: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state
μμ κ°μ μλ¬ λ©μΈμ§κ° λμλ€.
λ€μν λ°©μμΌλ‘ λ‘μ§μ ꡬνμ€μ΄μ¬μ μ°Ύλλ° μ‘°κΈ κ±Έλ Έλλ° μ΄μ λ λ¨μνλ€.
λμ μ½λκ° μμΌμ μ΄μ΄μ€ ν λ°λ‘ λ©μΈμ§λ₯Ό μ μ‘νλ €κ³ ν΄μ κ·Έλ¬λ€ ... γ
νμ¬ μμκ°μ΄ onopen ν¨μλ‘ μμΌμ΄ μ΄λ¦΄λκΉμ§ κΈ°λ€λ €μ£Όλ©΄ λ©μΈμ§ μ μ‘ μ μλ¬κ° λ°μνμ§ μλλ€.ν μ€νΈ κ³Όμ μμ λ°μν μλ¬μ§λ§ μ μκ°ν΄λ³΄λ©΄ μμΌμ μ΄μλ§μ λ©μΈμ§λ₯Ό λ°λ‘ μ μ‘νλκ²μ μ€μκ° μ±ν μμ μΌμ΄λμλ μλλ€.
λ©μΈμ§ μ μ‘ λ²νΌμ μμΌ μ€ν μ½λκ° λμμ μμΌλ©΄ κ³μ μμΌμ΄ μ΄λ¦΄ μ μκΈ° λλ¬Έ, λ¬Όλ‘ μμΈ μ²λ¦¬λ₯Ό ν΄μ£Όλ©΄ λμ§λ§ ν¨μλ₯Ό λλμ΄ κΉλνκ² μ§λ κ²μ΄ λ μ’κ² λ€κ³ μκ°λκ³ , onopenμ μ±λ΄ μλ¦Όκ³Ό κ°μ κΈ°λ₯μ μ¬μ©νμ§ μμκΉ? λΌλ μκ°μ νλ€.
μ€μκ° μ±ν μ΄ κ΅¬νλλ©΄ μλ¦ΌκΈ°λ₯μ λ°λ‘ ꡬνν΄λ΄μΌκ² λ€.
π code
@database_sync_to_async def create_chat_log(self, room_id, sender, content): RoomMessage.objects.create(room=room_id, user=sender, content=content) sender = await self.get_user_db(sender_id) receiver = await self.get_user_db(receiver_id) room_object = await self.get_chatroom_db(room_id) await self.create_chat_log(room_object, sender, message)
μμΈμ‘°μ°¨ μ°ΎκΈ° μ΄λ €μ λ μλ¬μ΄λ€ λ°λ‘ websocket μ°κ²°μ΄ λ겨 μ΄λμ μλͺ»λλμ§ μ°Ύμ μλ μμμ§λ§, DBλ₯Ό λ§λ μ§νμ λ μλ¬μΈμ§λΌ DBμͺ½μ΄λΌ μ§κ°νκ³ νμ€ μ© μ§μκ°λ©° μ°Ύμλ€.
database λΉλκΈ° μ²λ¦¬λ₯Ό ν΄μ£Όμλλ° λ°±μλμμ DB createκ³Όμ μμ λκ²Όλ€.
μμ§ μ΄μ λ λͺ¨λ₯΄κ² λ€.. γ
λ΄μΌ λ°λ‘ μ°Ύμλ΄μΌκ² λ€..
π Channels Layers
Channelsλ₯Ό μκ°ν λ λνμ μΈ κ·Έλ¦Όμ΄λ€.
- channelμ λ©μΈμ§λ₯Ό λ³΄λΌ μ μλ μ°νΈν¨ κ°μ κ°λ μ΄λ€. κ° μ±λμ μ΄λ¦μ΄ μμΌλ©° λꡬλ μ§ μ±λμ λ©μΈμ§λ₯Ό μ μ‘ν μ μλ€ - λ¬Όλ‘ μΈμ¦κ³Όμ μ κ±°μΉλ λ°©λ²λ μλ€.
- groupλ μ΄λ¦μ κ°μ§λ©° κ·Έλ£Ή μ΄λ¦μ κ°μ§ μ¬μ©μλ κ·Έλ£Ήμμ μ±λμ μΆκ° λ° μμ λ₯Ό ν μ μμΌλ©° κ·Έλ£Ήμ μ±λμ λ©μΈμ§λ₯Ό λ³΄λΌ μ μλ€.
μ¦ μλ²μμ λ©μΈμ§λ₯Ό λ°μΌλ©΄ room μ΄λ¦μ λ°λΌ groupμΌλ‘ forwarding ν ν κ·Έλ£Ήμμ ν΄λΉ μ±λ λ μ΄μ΄μ λ©μΈμ§λ₯Ό μ μ‘νκ² μ½λλ₯Ό μμ±νλ©΄ λλ€.