究极无敌稳定版

main
wang 1 month ago
parent d8833c9193
commit 9a9352b340

@ -40,7 +40,7 @@ EXPOSE 5001/udp
# 创建启动脚本
RUN echo '#!/bin/bash\n\
python voice_udp_server.py &\n\
gunicorn --workers 2 --bind 0.0.0.0:5000 app:app\n\
gunicorn --workers 1 --worker-class eventlet --bind 0.0.0.0:5000 app:app\n\
' > /app/start.sh && chmod +x /app/start.sh
# 使用启动脚本启动应用

@ -638,14 +638,14 @@ def handle_send_message(data):
if not room_id or not message_text:
return
# 获取用户和房间信息
try:
with app.app_context():
user = User.query.get(user_id)
room = ChatRoom.query.get(room_id)
if not user or not room:
return
# 保存消息到数据库
message = ChatMessage(
room_id=room_id,
user_id=user_id,
@ -656,7 +656,6 @@ def handle_send_message(data):
db.session.add(message)
db.session.commit()
# 广播消息给房间内的所有用户
emit('new_message', {
'id': message.id,
'user_id': user_id,
@ -666,6 +665,10 @@ def handle_send_message(data):
'created_at': message.created_at.isoformat()
}, room=str(room_id))
except Exception as e:
logger.error(f"处理文本消息时出错: {e}")
db.session.rollback()
@socketio.on('send_audio_message')
def handle_send_audio_message(data):
user_id = session.get('user_id')
@ -704,7 +707,7 @@ def handle_send_audio_message(data):
logger.info(f"处理语音消息: 用户ID={user_id}, 房间ID={room_id}, 音频时长={audio_duration}秒, MIME类型={audio_mime_type}, 数据长度={len(audio_data)}")
try:
# 获取用户和房间信息
with app.app_context():
user = User.query.get(user_id)
room = ChatRoom.query.get(room_id)
@ -712,11 +715,10 @@ def handle_send_audio_message(data):
logger.error(f"用户或房间不存在: user_id={user_id}, room_id={room_id}")
return
# 保存消息到数据库
message = ChatMessage(
room_id=room_id,
user_id=user_id,
message=audio_data, # 存储Base64编码的音频数据
message=audio_data,
message_type='audio',
audio_duration=audio_duration
)
@ -725,7 +727,6 @@ def handle_send_audio_message(data):
db.session.commit()
logger.info(f"语音消息已保存到数据库: ID={message.id}")
# 广播消息给房间内的所有用户
emit('new_message', {
'id': message.id,
'user_id': user_id,

@ -0,0 +1,19 @@
# Dependencies
/node_modules
# Build files
/dist
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# IDE and editor directories
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

@ -1,3 +1,8 @@
upstream backend {
ip_hash;
server backend:5000;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
@ -76,7 +81,7 @@ server {
# API请求代理到后端服务
location /api/ {
proxy_pass http://backend:5000;
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@ -88,7 +93,7 @@ server {
# Socket.IO请求代理到后端服务
location /socket.io/ {
proxy_pass http://backend:5000;
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
@ -104,7 +109,7 @@ server {
# 支持WebRTC信令转发
location /rtc/ {
proxy_pass http://backend:5000;
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

File diff suppressed because one or more lines are too long

@ -310,14 +310,10 @@ export default {
// Socket
const initSocketConnection = () => {
// Socket
const currentHost = window.location.hostname;
const url = `http://${currentHost}:5000`;
// 使WebSocket
socket = io(url, {
// URL
socket = io({
withCredentials: true,
transports: ['polling'],
// pathNginx
path: '/socket.io'
});

Loading…
Cancel
Save