428번째 줄: |
428번째 줄: |
| |<syntaxhighlight lang="python"> | | |<syntaxhighlight lang="python"> |
| from channels.generic.websocket import WebsocketConsumer | | from channels.generic.websocket import WebsocketConsumer |
| + | from asgiref.sync import async_to_sync # 필요에 따라. |
| | | |
| class 컨슈머이름(WebsocketConsumer): | | class 컨슈머이름(WebsocketConsumer): |
540번째 줄: |
541번째 줄: |
| | | |
| type의 이름이 chat.message 라면 chat_message로 변경되어 처리된다. | | type의 이름이 chat.message 라면 chat_message로 변경되어 처리된다. |
| + | |
| + | {| class="wikitable" |
| + | !데이터 전송 함수 |
| + | !설명 |
| + | |- |
| + | |self.send() |
| + | |웹소켓(자바스크립트)으로 데이터를 보내 창에 띄운다. |
| + | |- |
| + | | |
| + | * async_to_sync(동기식) |
| + | * await self.channel_layer.group_send(비동기식) |
| + | |다른 유저들에게 보낼 때 사용한다. |
| + | |} |
| |<syntaxhighlight lang="python"> | | |<syntaxhighlight lang="python"> |
| def receive(self, text_data): | | def receive(self, text_data): |
574번째 줄: |
588번째 줄: |
| | | |
| (event가 들어오면 자동으로 실행되는 듯하다.) | | (event가 들어오면 자동으로 실행되는 듯하다.) |
− |
| |
| | | |
| 웹소켓(자바스크립트)으로 보낼 땐 json으로 변환하여 보내주어야 한다. | | 웹소켓(자바스크립트)으로 보낼 땐 json으로 변환하여 보내주어야 한다. |
| |<syntaxhighlight lang="python"> | | |<syntaxhighlight lang="python"> |
− | def chat_message(self, event): | + | def chat_message(self, event): # 변수명으로 event 대신 text를 사용하기도 한다. |
| message = event['message'] | | message = event['message'] |
| | | |