장고 채널의 예를 따라 간단한 대화방을 만들 계획입니다. 어제는 모든 것이 매력처럼 작동했으며 대화방을 만들었고 거기에서 채팅 할 수있었습니다. 갑자기 내 코드가 변경되지 않고 Websocket이 연결 및 핸드 셰이크 직후 연결을 끊기 시작했습니다.핸드 셰이크 후 장고 채널 websocket 연결 해제
consumers.py:
@channel_session
def ws_connect(message):
room = message.content['path'].strip("/")
message.channel_session['room'] = room
Group("chat").add(message.reply_channel)
message.reply_channel.send({"accept": True})
을 그리고 프론트 엔드 부분 :
My setup:
Django == 1.10.5
Python == 2.7
channels == 1.1.8
asgi-redis == 1.4.2
daphne == 1.3.0
내 consumers.py은 다음과 같습니다
$(function() {
// When we're using HTTPS, use WSS too.
var ws_scheme = window.location.protocol = "ws";
var chatsock = new WebSocket(ws_scheme + '://' + window.location.host + window.location.pathname);
chatsock.onmessage = function(message) {
var data = JSON.parse(message.data);
var chat = $("#chat");
var ele = $('<tr></tr>');
console.log(data);
ele.append(
$("<td></td>").text(data.timestamp)
);
ele.append(
$("<td></td>").text(data.handle)
);
ele.append(
$("<td></td>").text(data.message)
);
chat.append(ele)
};
$("#chatform").on("submit", function(event) {
var time = new Date();
var string = time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds();
// var timestamp = time.getHourMinuteSecond();
var message = {
timestamp: string,
handle: $('#handle').val(),
message: $('#message').val()
};
console.log("submit");
chatsock.send(JSON.stringify(message));
$("#message").val('').focus();
return false;
});
});
어쩌면 일부 기술의 업데이트가 밖으로이다. 왜 이런 일이 일어나는지 알기 위해 고심하고 있습니다.
CHANNEL_LAYERS = {
"default": {
"BACKEND": "asgi_redis.RedisChannelLayer",
"CONFIG": {
"hosts": [("localhost", 6379)],
},
"ROUTING": "config.routing.channel_routing",
},
}
내가 마우스 오른쪽 악수를 한 후 분리되어 통지를 다른 웹 소켓 논리를 가지고 settings.py에서 나는 레디 스 채널 계층에 대한 다음과 같은 구성을 가지고있다. 장고를 1.11로 업데이트하려고했습니다. 운이 없다. 채팅 응용 프로그램의 routing.py에서 :
chat_routing = [
route("websocket.connect", consumers.ws_connect),
route("websocket.receive", consumers.ws_message),
route("websocket.disconnect", consumers.ws_disconnect),
]
내가 리눅스 우분투 16.04와 나는 지난 몇 일에 업데이트 된 유일한에서 실행하고 크롬 버전입니다. 그래서 어떤 생각을해야합니까?
언제이 문제가 해결 될 예정입니까? 2 개월이 지났지 만 여전히이 동작을 보았습니다. –
프로젝트를 개발하면서 localhost와 chrome의 문제로 밝혀졌습니다. IP 주소를 사용하여 프로젝트를 제공한다면 괜찮을 것입니다 - python manage.py runserver –
huh ... 이것은 훌륭한 정보입니다! 고맙습니다. –