[4]장고 채널스(django channels) json 데이타 전송
Computer 비관심/Django2017. 2. 18. 00:01
반응형
콘슈머에 json과 parse를 임포트 한다. 지금까지 text: message.content['text'] 로 돌려보냈는데 이번에는 text: json.dumps()를 사용하여 데이타를 브라우저에 json 형태로 보낸다. 영문 튜로리얼과 다르게 우리는 한국말을 사용하기 때문에 , ensure_ascii=False를 붙여주어 한글이 아스키코드로 바뀌어서 나오는 것을 막았다.
# consumers.py
import json
from urllib import parse
from channels import Group
from channels.sessions import channel_session
@channel_session
def ws_add(message, room):
query = parse.parse_qs(message['query_string'])
if 'username' not in query:
return
Group('chat-%s' % room).add(message.reply_channel)
message.channel_session['room'] = room
message.channel_session['username'] = query['username'][0]
@channel_session
def ws_echo(message):
if 'username' not in message.channel_session:
return
room = message.channel_session['room']
Group('chat-%s' % room).send({
'text': json.dumps({
'message': message.content['text'],
'username': message.channel_session['username']
}, ensure_ascii=False),
})
콘솔에 웹소켓을 ws://localhost:8000/chat/1?username=sean 이런 형식으로 보낸뒤 아래와 같은 방식으로 브라우저 마다 여러개를 만들면 서버에서 메시지와 함게 세션에 저장된 usernamed을 함께 보내는 것을 확인 할 수 있다.
ws = new WebSocket((window.location.protocol == 'http:' ? 'ws://' : 'wss://') + window.location.host + '/chat/' + 1 + '?username=' + 'sean');
//메시지가 오면 콘솔
ws.onmessage = function(message) {
console.log(message.data);
}
ws.send('hi')
1번 브라우저에서는 션이라고 만들었고 2번째 브라우저에서는 jone이라고 만들어서 메시지를 보낸 것을 확인 할 수 있다.
'Computer 비관심 > Django' 카테고리의 다른 글
장고에서 폼 에러 찾기 (0) | 2017.03.03 |
---|---|
지금까지 하면서의 장고프레임웍의 장점과 단점 (0) | 2017.02.23 |
[3] 장고 채널스(django chennals) urls를 기반으로 한 라우팅 (0) | 2017.02.17 |
[2] 장고 채널스(django chennals) Group (0) | 2017.02.17 |
[1] 장고 채널스(django channels) 웹소켓 에코 (2) | 2017.02.17 |
댓글()