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