修复当地址带有端口号时ws地址拼接错误

This commit is contained in:
nnwang
2025-12-01 18:40:29 +08:00
parent 5f3a683e92
commit 9e5d85936b

View File

@@ -11,6 +11,7 @@ from http.server import HTTPServer, BaseHTTPRequestHandler
import websockets import websockets
from urllib.parse import parse_qs, urlparse from urllib.parse import parse_qs, urlparse
import mimetypes import mimetypes
import re
# 设置日志 # 设置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
@@ -35,9 +36,12 @@ class Room:
self.last_activity = datetime.now() self.last_activity = datetime.now()
self.clients: Set[str] = set() self.clients: Set[str] = set()
# 从host中移除端口号
host_without_port = re.sub(r':\d+$', '', server_host)
# 使用80端口 # 使用80端口
self.frontend_url = f"http://{server_host}/?id={room_id}&ws=ws://{server_host}" self.ws_url = f"ws://{host_without_port}:{ws_port}"
self.ws_url = f"ws://{server_host}:{ws_port}" self.frontend_url = f"http://{server_host}/?id={room_id}&ws={self.ws_url}"
def add_client(self, client_id: str): def add_client(self, client_id: str):
self.clients.add(client_id) self.clients.add(client_id)
@@ -143,17 +147,18 @@ class HTTPHandler(BaseHTTPRequestHandler):
# 生成唯一房间ID # 生成唯一房间ID
room_id = str(uuid.uuid4())[:8] room_id = str(uuid.uuid4())[:8]
# 获取服务器主机地址 # 获取服务器主机地址并移除端口号
host = self.headers.get('Host', 'localhost') host = self.headers.get('Host', 'localhost')
host_without_port = re.sub(r':\d+$', '', host)
# 创建房间 # 创建房间
room = Room(room_id, host) room = Room(room_id, host_without_port)
rooms[room_id] = room rooms[room_id] = room
logger.info(f"通过根路径创建新房间: {room_id}") logger.info(f"通过根路径创建新房间: {room_id}")
# 重定向到带房间ID和WebSocket URL的URL # 重定向到带房间ID和WebSocket URL的URL
redirect_url = f'/?id={room_id}&ws=ws://{host}:{ws_port}' redirect_url = f'/?id={room_id}&ws=ws://{host_without_port}:{ws_port}'
self.send_response(302) self.send_response(302)
self.send_header('Location', redirect_url) self.send_header('Location', redirect_url)
self.end_headers() self.end_headers()
@@ -247,11 +252,12 @@ class HTTPHandler(BaseHTTPRequestHandler):
# 生成唯一房间ID # 生成唯一房间ID
room_id = str(uuid.uuid4())[:8] room_id = str(uuid.uuid4())[:8]
# 获取服务器主机地址 # 获取服务器主机地址并移除端口号
host = self.headers.get('Host', 'localhost') host = self.headers.get('Host', 'localhost')
host_without_port = re.sub(r':\d+$', '', host)
# 创建房间 # 创建房间
room = Room(room_id, host) room = Room(room_id, host_without_port)
rooms[room_id] = room rooms[room_id] = room
logger.info(f"创建新房间: {room_id}") logger.info(f"创建新房间: {room_id}")