修复当地址带有端口号时ws地址拼接错误
This commit is contained in:
@@ -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}")
|
||||||
|
|||||||
Reference in New Issue
Block a user