Python ConnectionResetError:[Errno 54]对等Django通道重置连接
显示连接重置错误 路径匿名用户 [28/Sep/2020 12:43:30]“GET/chat/aman/aman_indresh/HTTP/1.1”200 1920 路径匿名用户 找不到:/ws/chat/aman\u indresh/ [28/Sep/2020 12:43:30]“GET/ws/chat/aman_indresh/HTTP/1.1”404 2211 处理来自('127.0.0.1',54816'的请求时发生异常 回溯(最近一次呼叫最后一次): 文件“/usr/local/cillar”/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/socketserver.py”,第650行,进程中请求线程 自我完成请求(请求、客户地址) 文件“/usr/local/cillar”/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/socketserver.py”,第360行,在finish_请求中 self.RequestHandlerClass(请求、客户端地址、self) 文件“/usr/local/cillar”/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/socketserver.py”,第720行,在init self.handle() 文件“/Users/indresh/Documents/Projects/tiktok/server/env/lib/python3.8/site packages/django/core/servers/basehttp.py”,第174行,在handle中 self.handle_one_请求() 文件“/Users/indresh/Documents/Projects/tiktok/server/env/lib/python3.8/site packages/django/core/servers/basehttp.py”,第182行,在handle\u one\u请求中 self.raw_requestline=self.rfile.readline(65537) 文件 “/usr/本地/酒窖/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/socket.py”,第669行,在readinto中 返回自我。将袜子重新放入(b) ConnectionResetError:[Errno 54]对等方重置连接 Consumers.pyPython ConnectionResetError:[Errno 54]对等Django通道重置连接,python,django,websocket,django-channels,Python,Django,Websocket,Django Channels,显示连接重置错误 路径匿名用户 [28/Sep/2020 12:43:30]“GET/chat/aman/aman_indresh/HTTP/1.1”200 1920 路径匿名用户 找不到:/ws/chat/aman\u indresh/ [28/Sep/2020 12:43:30]“GET/ws/chat/aman_indresh/HTTP/1.1”404 2211 处理来自('127.0.0.1',54816'的请求时发生异常 回溯(最近一次呼叫最后一次): 文件“/usr/local/ci
import json
from asgiref.sync import async_to_sync
from channels.generic.websocket import WebsocketConsumer
class ChatConsumer(WebsocketConsumer):
def connect(self):
# print(self.channel_layer)
self.room_name = self.scope['url_route']['kwargs']['room_name']
self.room_group_name = 'chat_%s' % self.room_name
# Join room group
async_to_sync(self.channel_layer.group_add)(
self.room_group_name,
self.channel_name
)
self.accept()
def disconnect(self, close_code):
# Leave room group
async_to_sync(self.channel_layer.group_discard)(
self.room_group_name,
self.channel_name
)
# Receive message from WebSocket
def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
sender_name = text_data_json['sender_name']
# Send message to room group
async_to_sync(self.channel_layer.group_send)(
self.room_group_name,
{
'type': 'chat_message',
'message': message,
'sender_name': sender_name
}
)
# Receive message from room group
def chat_message(self, event):
message = event['message']
sender_name = event['sender_name']
# Send message to WebSocket
self.send(text_data=json.dumps({
'message': message,
'sender_name': sender_name
}))
from django.urls import re_path
from . import consumers
websocket_urlpatterns = [
re_path(r'ws/chat/(?P<room_name>\w+)/$', consumers.ChatConsumer),
]
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import chat_socket.routing
application = ProtocolTypeRouter({
'websocket': AuthMiddlewareStack(
URLRouter(
chat_socket.routing.websocket_urlpatterns
)
),
})
routing.py
import json
from asgiref.sync import async_to_sync
from channels.generic.websocket import WebsocketConsumer
class ChatConsumer(WebsocketConsumer):
def connect(self):
# print(self.channel_layer)
self.room_name = self.scope['url_route']['kwargs']['room_name']
self.room_group_name = 'chat_%s' % self.room_name
# Join room group
async_to_sync(self.channel_layer.group_add)(
self.room_group_name,
self.channel_name
)
self.accept()
def disconnect(self, close_code):
# Leave room group
async_to_sync(self.channel_layer.group_discard)(
self.room_group_name,
self.channel_name
)
# Receive message from WebSocket
def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
sender_name = text_data_json['sender_name']
# Send message to room group
async_to_sync(self.channel_layer.group_send)(
self.room_group_name,
{
'type': 'chat_message',
'message': message,
'sender_name': sender_name
}
)
# Receive message from room group
def chat_message(self, event):
message = event['message']
sender_name = event['sender_name']
# Send message to WebSocket
self.send(text_data=json.dumps({
'message': message,
'sender_name': sender_name
}))
from django.urls import re_path
from . import consumers
websocket_urlpatterns = [
re_path(r'ws/chat/(?P<room_name>\w+)/$', consumers.ChatConsumer),
]
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import chat_socket.routing
application = ProtocolTypeRouter({
'websocket': AuthMiddlewareStack(
URLRouter(
chat_socket.routing.websocket_urlpatterns
)
),
})
room.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Chat Room</title>
</head>
<body>
<textarea id="chat-log" cols="100" rows="20"></textarea><br>
<input id="chat-message-input" type="text" size="100"><br>
<input id="chat-message-submit" type="button" value="Send">
{{ room_name|json_script:"room-name" }}
{{ your_name|json_script:"your-name" }}
<h2>{{your_name}}</h2>
<script>
const roomName = JSON.parse(document.getElementById('room-name').textContent);
const yourName = JSON.parse(document.getElementById('your-name').textContent);
const chatSocket = new WebSocket(
'ws://'
+ window.location.host
+ '/ws/chat/'
+ roomName
+ '/'
);
chatSocket.onmessage = function(e) {
const data = JSON.parse(e.data);
console.log(e);
document.querySelector('#chat-log').value += (data.sender_name+": "+data.message + '\n');
};
chatSocket.onclose = function(e) {
console.log(e);
console.error('Chat socket closed unexpectedly');
};
document.querySelector('#chat-message-input').focus();
document.querySelector('#chat-message-input').onkeyup = function(e) {
if (e.keyCode === 13) { // enter, return
document.querySelector('#chat-message-submit').click();
}
};
document.querySelector('#chat-message-submit').onclick = function(e) {
const messageInputDom = document.querySelector('#chat-message-input');
const message = messageInputDom.value;
chatSocket.send(JSON.stringify({
'message': message,
'sender_name': yourName,
}));
messageInputDom.value = '';
};
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Chat Rooms</title>
</head>
<body>
Your Name?<br>
<input id="your-name-input" type="text" size="100"><br>
Your chat room name?<br>
<input id="room-name-input" type="text" size="100"><br>
<input id="room-name-submit" type="button" value="Enter">
<script>
document.querySelector('#room-name-input').focus();
document.querySelector('#room-name-input').onkeyup = function(e) {
if (e.keyCode === 13) { // enter, return
document.querySelector('#room-name-submit').click();
}
};
document.querySelector('#room-name-submit').onclick = function(e) {
var roomName = document.querySelector('#room-name-input').value;
var yourName = document.querySelector('#your-name-input').value;
if(yourName == null){
yourName = Math.floor(Math.random() * 100000000);
}
window.location.pathname = '/chat/' + yourName + '/' + roomName + '/';
};
</script>
</body>
</html>
聊天室
{{room_name}json_脚本:“room name”}
{{your_name}json_脚本:“your name”}
{{你的名字}
const roomName=JSON.parse(document.getElementById('room-name').textContent);
const yourName=JSON.parse(document.getElementById('your-name').textContent);
const chatSocket=新的WebSocket(
'ws://'
+window.location.host
+“/ws/chat/”
+室名
+ '/'
);
chatSocket.onmessage=函数(e){
const data=JSON.parse(e.data);
控制台日志(e);
document.querySelector(“#聊天日志”).value+=(data.sender_name+”:“+data.message+'\n”);
};
chatSocket.onclose=函数(e){
控制台日志(e);
console.error('聊天套接字意外关闭');
};
document.querySelector(“#聊天信息输入”).focus();
document.querySelector(“#聊天信息输入”).onkeyup=function(e){
如果(e.keyCode==13){//输入,返回
document.querySelector(“#聊天信息提交”)。单击();
}
};
document.querySelector(“#聊天信息提交”).onclick=function(e){
const messageInputDom=document.querySelector(“#聊天信息输入”);
const message=messageInputDom.value;
发送(JSON.stringify({
“消息”:消息,
“发件人姓名”:您的姓名,
}));
messageInputDom.value='';
};
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Chat Room</title>
</head>
<body>
<textarea id="chat-log" cols="100" rows="20"></textarea><br>
<input id="chat-message-input" type="text" size="100"><br>
<input id="chat-message-submit" type="button" value="Send">
{{ room_name|json_script:"room-name" }}
{{ your_name|json_script:"your-name" }}
<h2>{{your_name}}</h2>
<script>
const roomName = JSON.parse(document.getElementById('room-name').textContent);
const yourName = JSON.parse(document.getElementById('your-name').textContent);
const chatSocket = new WebSocket(
'ws://'
+ window.location.host
+ '/ws/chat/'
+ roomName
+ '/'
);
chatSocket.onmessage = function(e) {
const data = JSON.parse(e.data);
console.log(e);
document.querySelector('#chat-log').value += (data.sender_name+": "+data.message + '\n');
};
chatSocket.onclose = function(e) {
console.log(e);
console.error('Chat socket closed unexpectedly');
};
document.querySelector('#chat-message-input').focus();
document.querySelector('#chat-message-input').onkeyup = function(e) {
if (e.keyCode === 13) { // enter, return
document.querySelector('#chat-message-submit').click();
}
};
document.querySelector('#chat-message-submit').onclick = function(e) {
const messageInputDom = document.querySelector('#chat-message-input');
const message = messageInputDom.value;
chatSocket.send(JSON.stringify({
'message': message,
'sender_name': yourName,
}));
messageInputDom.value = '';
};
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Chat Rooms</title>
</head>
<body>
Your Name?<br>
<input id="your-name-input" type="text" size="100"><br>
Your chat room name?<br>
<input id="room-name-input" type="text" size="100"><br>
<input id="room-name-submit" type="button" value="Enter">
<script>
document.querySelector('#room-name-input').focus();
document.querySelector('#room-name-input').onkeyup = function(e) {
if (e.keyCode === 13) { // enter, return
document.querySelector('#room-name-submit').click();
}
};
document.querySelector('#room-name-submit').onclick = function(e) {
var roomName = document.querySelector('#room-name-input').value;
var yourName = document.querySelector('#your-name-input').value;
if(yourName == null){
yourName = Math.floor(Math.random() * 100000000);
}
window.location.pathname = '/chat/' + yourName + '/' + roomName + '/';
};
</script>
</body>
</html>
聊天室
你叫什么名字?
您的聊天室名称?
document.querySelector(“#房间名称输入”).focus();
document.querySelector(“#房间名称输入”).onkeyup=function(e){
如果(e.keyCode==13){//输入,返回
document.querySelector(“#房间名称提交”)。单击();
}
};
document.querySelector(“#房间名称提交”).onclick=function(e){
var roomName=document.querySelector(“#room name input”).value;
var yourName=document.querySelector(“#yourName input”).value;
如果(yourName==null){
yourName=Math.floor(Math.random()*100000000);
}
window.location.pathname='/chat/'+yourName+'/'+roomName+'/';
};
我遇到了相同的问题ConnectionResetError:[Errno 54]由对等方重置连接
这个问题是关于尝试通过development server提供静态文件,而debug设置为False
,只有在设置文件中将debug
设置为True
时,development server才能提供静态文件
在您的设置文件中,替换
DEBUG = False
与
现在重新启动开发服务器,它现在应该可以工作了。增强问题标题和描述可能会有很大帮助。它无法连接到web套接字服务器。。。它抛出“ConnectionResetError:[Errno 54]由对等方重置连接”