X commited on
Update app.py
Browse files
app.py
CHANGED
|
@@ -50,28 +50,6 @@ def generate_word_code():
|
|
| 50 |
word3 = str(random.randint(10, 99))
|
| 51 |
return f"{word1}-{word2}-{word3}".upper()
|
| 52 |
|
| 53 |
-
# ========== ЗАПУСК PEERJS ==========
|
| 54 |
-
def start_peerjs():
|
| 55 |
-
try:
|
| 56 |
-
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
| 57 |
-
result = sock.connect_ex(('127.0.0.1', 9000))
|
| 58 |
-
sock.close()
|
| 59 |
-
|
| 60 |
-
if result != 0:
|
| 61 |
-
print("🚀 Запускаем PeerJS Server...")
|
| 62 |
-
subprocess.Popen(
|
| 63 |
-
["peer", "--port", "9000", "--path", "/peerjs"],
|
| 64 |
-
stdout=subprocess.DEVNULL,
|
| 65 |
-
stderr=subprocess.DEVNULL,
|
| 66 |
-
start_new_session=True
|
| 67 |
-
)
|
| 68 |
-
time.sleep(3)
|
| 69 |
-
print("✅ PeerJS Server запущен")
|
| 70 |
-
except Exception as e:
|
| 71 |
-
print(f"⚠️ Ошибка запуска PeerJS: {e}")
|
| 72 |
-
|
| 73 |
-
threading.Thread(target=start_peerjs, daemon=True).start()
|
| 74 |
-
|
| 75 |
# ========== FASTAPI ==========
|
| 76 |
app = FastAPI()
|
| 77 |
|
|
@@ -306,7 +284,7 @@ async def index(request: Request):
|
|
| 306 |
let friends = [];
|
| 307 |
let currentCode = null;
|
| 308 |
|
| 309 |
-
// ========== ИНИЦИАЛИЗАЦИЯ PEER ==========
|
| 310 |
function initPeer(callback) {
|
| 311 |
if (myPeer && myPeer.open) {
|
| 312 |
if (callback) callback();
|
|
@@ -320,11 +298,12 @@ async def index(request: Request):
|
|
| 320 |
}
|
| 321 |
myId = savedId;
|
| 322 |
|
|
|
|
| 323 |
myPeer = new Peer(myId, {
|
| 324 |
-
host:
|
| 325 |
-
port:
|
| 326 |
-
path: '/
|
| 327 |
-
secure:
|
| 328 |
});
|
| 329 |
|
| 330 |
myPeer.on('open', (id) => {
|
|
@@ -340,7 +319,6 @@ async def index(request: Request):
|
|
| 340 |
console.error('Peer error:', err);
|
| 341 |
});
|
| 342 |
|
| 343 |
-
// Если Peer уже открыт
|
| 344 |
if (myPeer.open) {
|
| 345 |
if (callback) callback();
|
| 346 |
}
|
|
@@ -356,7 +334,6 @@ async def index(request: Request):
|
|
| 356 |
return;
|
| 357 |
}
|
| 358 |
|
| 359 |
-
// Проверяем формат: СЛОВО-СЛОВО-ЧИСЛО
|
| 360 |
const parts = code.split('-');
|
| 361 |
if (parts.length !== 3 || isNaN(parts[2])) {
|
| 362 |
status.innerHTML = '<div class="status error">❌ Неверный формат. Пример: СОЛНЦЕ-ЛУНА-42</div>';
|
|
@@ -384,14 +361,12 @@ async def index(request: Request):
|
|
| 384 |
|
| 385 |
status.innerHTML = `<div class="status success">✅ Добро пожаловать, ${d.name}!</div>`;
|
| 386 |
|
| 387 |
-
// Показываем профиль
|
| 388 |
document.getElementById('profile-section').classList.remove('hidden');
|
| 389 |
document.getElementById('friends-section').classList.remove('hidden');
|
| 390 |
document.getElementById('profile-name').textContent = d.name;
|
| 391 |
document.getElementById('profile-id').textContent = d.peer_id;
|
| 392 |
document.getElementById('login-section').style.display = 'none';
|
| 393 |
|
| 394 |
-
// Инициализируем Peer
|
| 395 |
initPeer(() => {
|
| 396 |
loadFriends();
|
| 397 |
});
|
|
@@ -618,14 +593,12 @@ async def login(data: dict):
|
|
| 618 |
users = load_json(USERS_FILE)
|
| 619 |
|
| 620 |
if code in users:
|
| 621 |
-
# Вход в существующий аккаунт
|
| 622 |
return JSONResponse({
|
| 623 |
"success": True,
|
| 624 |
"name": users[code]["name"],
|
| 625 |
"peer_id": users[code]["peer_id"]
|
| 626 |
})
|
| 627 |
else:
|
| 628 |
-
# Создание нового аккаунта
|
| 629 |
peer_id = str(uuid.uuid4())
|
| 630 |
name = f"User_{len(users) + 1}"
|
| 631 |
users[code] = {
|
|
@@ -647,7 +620,6 @@ async def generate_code():
|
|
| 647 |
try:
|
| 648 |
users = load_json(USERS_FILE)
|
| 649 |
code = generate_word_code()
|
| 650 |
-
# Проверяем уникальность
|
| 651 |
while code in users:
|
| 652 |
code = generate_word_code()
|
| 653 |
return JSONResponse({"success": True, "code": code})
|
|
|
|
| 50 |
word3 = str(random.randint(10, 99))
|
| 51 |
return f"{word1}-{word2}-{word3}".upper()
|
| 52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
# ========== FASTAPI ==========
|
| 54 |
app = FastAPI()
|
| 55 |
|
|
|
|
| 284 |
let friends = [];
|
| 285 |
let currentCode = null;
|
| 286 |
|
| 287 |
+
// ========== ИНИЦИАЛИЗАЦИЯ PEER (CLOUD) ==========
|
| 288 |
function initPeer(callback) {
|
| 289 |
if (myPeer && myPeer.open) {
|
| 290 |
if (callback) callback();
|
|
|
|
| 298 |
}
|
| 299 |
myId = savedId;
|
| 300 |
|
| 301 |
+
// ИСПРАВЛЕНО: используем облачный PeerJS сервер
|
| 302 |
myPeer = new Peer(myId, {
|
| 303 |
+
host: '0.peerjs.com',
|
| 304 |
+
port: 443,
|
| 305 |
+
path: '/',
|
| 306 |
+
secure: true
|
| 307 |
});
|
| 308 |
|
| 309 |
myPeer.on('open', (id) => {
|
|
|
|
| 319 |
console.error('Peer error:', err);
|
| 320 |
});
|
| 321 |
|
|
|
|
| 322 |
if (myPeer.open) {
|
| 323 |
if (callback) callback();
|
| 324 |
}
|
|
|
|
| 334 |
return;
|
| 335 |
}
|
| 336 |
|
|
|
|
| 337 |
const parts = code.split('-');
|
| 338 |
if (parts.length !== 3 || isNaN(parts[2])) {
|
| 339 |
status.innerHTML = '<div class="status error">❌ Неверный формат. Пример: СОЛНЦЕ-ЛУНА-42</div>';
|
|
|
|
| 361 |
|
| 362 |
status.innerHTML = `<div class="status success">✅ Добро пожаловать, ${d.name}!</div>`;
|
| 363 |
|
|
|
|
| 364 |
document.getElementById('profile-section').classList.remove('hidden');
|
| 365 |
document.getElementById('friends-section').classList.remove('hidden');
|
| 366 |
document.getElementById('profile-name').textContent = d.name;
|
| 367 |
document.getElementById('profile-id').textContent = d.peer_id;
|
| 368 |
document.getElementById('login-section').style.display = 'none';
|
| 369 |
|
|
|
|
| 370 |
initPeer(() => {
|
| 371 |
loadFriends();
|
| 372 |
});
|
|
|
|
| 593 |
users = load_json(USERS_FILE)
|
| 594 |
|
| 595 |
if code in users:
|
|
|
|
| 596 |
return JSONResponse({
|
| 597 |
"success": True,
|
| 598 |
"name": users[code]["name"],
|
| 599 |
"peer_id": users[code]["peer_id"]
|
| 600 |
})
|
| 601 |
else:
|
|
|
|
| 602 |
peer_id = str(uuid.uuid4())
|
| 603 |
name = f"User_{len(users) + 1}"
|
| 604 |
users[code] = {
|
|
|
|
| 620 |
try:
|
| 621 |
users = load_json(USERS_FILE)
|
| 622 |
code = generate_word_code()
|
|
|
|
| 623 |
while code in users:
|
| 624 |
code = generate_word_code()
|
| 625 |
return JSONResponse({"success": True, "code": code})
|