המלצה | חדש חדש!! צ'אט ישיר בין מחשבים כולל שיחות וידאו ואודיו והעברת קבצים ישירה פתוח לכולם!!!!
-
@רוטב-שום לקחתי סתם מספר למעלה...
תוכל רגע לפתוח?
ניסתי אליך שוב

-
@רוטב-שום לקחתי סתם מספר למעלה...
תוכל רגע לפתוח?
ניסתי אליך שוב

-
תוכל רגע לפתוח?
פתוח אצלי!!
-
@שמואל-הסיני התבלבלת המספר שלי זה 80657 ולא60857
-
@שמואל-הסיני התבלבלת המספר שלי זה 80657 ולא60857
@שמואל-הסיני התבלבלת המספר שלי זה 80657 ולא60857
אויש אני מנסה עכשיו טוב?
-
@שמואל-הסיני התבלבלת המספר שלי זה 80657 ולא60857
אויש אני מנסה עכשיו טוב?
@שמואל-הסיני אוקי
-
@שמואל-הסיני אוקי
-
@רוטב-שום @שמואל-הסיני
תעדכנו אם הצלחתם...@רוטב-שום @שמואל-הסיני
תעדכנו אם הצלחתם...לא הצלחנו.
זה נראה קצת, לא עובד...
ושנינו בנט פרי... -
הרצתי בין 2 מחשבים ברשת שלי ולא עבד, שאלתי את גמיני וזו תשובתו
בצילום המסך שהעלת מופיעות שתי שגיאות ברורות בקונסולה (F12) שמסבירות בדיוק מדוע החיבור אינו מצליח להתבצע:
בעיה 1: שגיאות 406 (Not Acceptable) מול Supabase
שגיאה זו נובעת מאופן הפעולה של המתודה .single() בקוד. בכל 4 שניות, האפליקציה מריצה לולאה שבודקת ב-Supabase האם יש קריאה נכנסת המיועדת ל-ID שלך:const { data, error } = await supabaseClient.from('calls').select('*').eq('id', myID).single();
כאשר אין קריאה פעילה (שזהו המצב הרגיל רוב הזמן), בסיס הנתונים מחזיר 0 שורות. ב-Supabase, המתודה .single() מתוכננת לזרוק שגיאת HTTP 406 כאשר חוזר מספר שורות שאינו בדיוק 1. למרות שהקוד עוטף זאת ב-try-catch, הדפדפן עדיין רושם את השגיאה הזו באדום בקונסולה ומציף אותה.הפתרון: יש להחליף את ה-.single() במתודה בשם .maybeSingle(). מתודה זו מחזירה ערך ריק (null) בצורה שקטה וללא שגיאות כאשר אין נתונים בטבלה.
בעיה 2: הרצה מקומית מפרוטוקול file:// (הסיבה המרכזית לחוסר החיבור)
בקונסולה מופיעה השגיאה:
Unsafe attempt to load URL file:///C:/Users/OWNER/Downloads/...הרצת את קובץ ה-HTML ישירות מהורדות המחשב על ידי לחיצה כפולה (כתובת הדפדפן מתחילה ב-file:///). דפדפנים מודרניים חוסמים תכונות רשת מתקדמות של WebRTC, אבטחה והצפנה כאשר הן מורצות ישירות מתוך קובץ מקומי, מכיוון שהוא מוגדר כסביבה לא מאובטחת (Insecure Context). כדי שהדפדפן יאפשר ל-WebRTC ליצור חיבור P2P, הוא חייב לרוץ תחת http://localhost (שרת מקומי) או תחת כתובת https:// מאובטחת.
הפתרון:
הרצה מקומית: יש להריץ את הקובץ באמצעות שרת אינטרנט מקומי קטן (למשל, תוסף "Live Server" ב-VS Code, או הרצה דרך פקודה כמו python -m http.server בטרמינל באותה תיקייה) ולגשת אליו דרך הכתובת http://localhost:8000.
הרצה ברשת: להעלות את הקובץ לשרת אירוח חינמי ותומך HTTPS (כמו GitHub Pages, Netlify, או Vercel) ולפתוח אותו משם.
קוד מעודכן לתיקון ה-406
כדי לנקות את שגיאות ה-406 מהקונסולה, מומלץ להחליף את שתי פונקציות האיתות בקוד שלך כך שישתמשו ב-maybeSingle() במקום single(). להלן חלקי הקוד שיש לעדכן:בלולאת הבדיקה הראשית (שורה 218 בערך):
setInterval(async () => {
if (pc) return;
try {
// שינוי ל-maybeSingle כדי למנוע שגיאות 406
const { data, error } = await supabaseClient.from('calls').select('').eq('id', myID).maybeSingle();
if (data && data.data) {
const payload = JSON.parse(safeAtob(data.data));
if (Date.now() - payload.timestamp > 20000) {
await clearServerData();
return;
}
currentHostID = payload.fromID;
updateHeader(contacts[currentHostID] || currentHostID);
sysMsg("קריאה נכנסת...");
initWebRTC(false, payload.offer, myID);
}
} catch (e) {
console.error("שגיאה בבדיקת שיחות נכנסות:", e);
}
}, 4000);
בתוך פונקציית initWebRTC (שורה 280 בערך):
checkInterval = setInterval(async () => {
// שינוי ל-maybeSingle גם כאן
const { data } = await supabaseClient.from('calls').select('').eq('id', myID).maybeSingle();
if (data && data.data) {
const resData = JSON.parse(safeAtob(data.data));
if (resData.type === 'answer' && pc.signalingState === "have-local-offer") {
pc.setRemoteDescription(new RTCSessionDescription(JSON.parse(resData.answer)));
clearInterval(checkInterval);
}
}
}, 3000);
לאחר שתבצע את השינויים הללו בקוד ותריץ את האפליקציה דרך Localhost או דרך שרת אינטרנט מאובטח (ולא בלחיצה כפולה על הקובץ), החיבור אמור להתבצע בהצלחה.עצרתי כאן כי שרת חיצוני חסום בנטפרי [האתר לא נבדק] ודרך פייתון לא יכולתי כי באחד מהמחשבים אין, ובינתיים לא התקנתי. אם מישהו יבדוק וזה יעזור, אתקין. [למרות שאני מעדיף את הגרסה עם הקוד הארוך וללא שום שרת עזר בדרך]
-
הרצתי בין 2 מחשבים ברשת שלי ולא עבד, שאלתי את גמיני וזו תשובתו
בצילום המסך שהעלת מופיעות שתי שגיאות ברורות בקונסולה (F12) שמסבירות בדיוק מדוע החיבור אינו מצליח להתבצע:
בעיה 1: שגיאות 406 (Not Acceptable) מול Supabase
שגיאה זו נובעת מאופן הפעולה של המתודה .single() בקוד. בכל 4 שניות, האפליקציה מריצה לולאה שבודקת ב-Supabase האם יש קריאה נכנסת המיועדת ל-ID שלך:const { data, error } = await supabaseClient.from('calls').select('*').eq('id', myID).single();
כאשר אין קריאה פעילה (שזהו המצב הרגיל רוב הזמן), בסיס הנתונים מחזיר 0 שורות. ב-Supabase, המתודה .single() מתוכננת לזרוק שגיאת HTTP 406 כאשר חוזר מספר שורות שאינו בדיוק 1. למרות שהקוד עוטף זאת ב-try-catch, הדפדפן עדיין רושם את השגיאה הזו באדום בקונסולה ומציף אותה.הפתרון: יש להחליף את ה-.single() במתודה בשם .maybeSingle(). מתודה זו מחזירה ערך ריק (null) בצורה שקטה וללא שגיאות כאשר אין נתונים בטבלה.
בעיה 2: הרצה מקומית מפרוטוקול file:// (הסיבה המרכזית לחוסר החיבור)
בקונסולה מופיעה השגיאה:
Unsafe attempt to load URL file:///C:/Users/OWNER/Downloads/...הרצת את קובץ ה-HTML ישירות מהורדות המחשב על ידי לחיצה כפולה (כתובת הדפדפן מתחילה ב-file:///). דפדפנים מודרניים חוסמים תכונות רשת מתקדמות של WebRTC, אבטחה והצפנה כאשר הן מורצות ישירות מתוך קובץ מקומי, מכיוון שהוא מוגדר כסביבה לא מאובטחת (Insecure Context). כדי שהדפדפן יאפשר ל-WebRTC ליצור חיבור P2P, הוא חייב לרוץ תחת http://localhost (שרת מקומי) או תחת כתובת https:// מאובטחת.
הפתרון:
הרצה מקומית: יש להריץ את הקובץ באמצעות שרת אינטרנט מקומי קטן (למשל, תוסף "Live Server" ב-VS Code, או הרצה דרך פקודה כמו python -m http.server בטרמינל באותה תיקייה) ולגשת אליו דרך הכתובת http://localhost:8000.
הרצה ברשת: להעלות את הקובץ לשרת אירוח חינמי ותומך HTTPS (כמו GitHub Pages, Netlify, או Vercel) ולפתוח אותו משם.
קוד מעודכן לתיקון ה-406
כדי לנקות את שגיאות ה-406 מהקונסולה, מומלץ להחליף את שתי פונקציות האיתות בקוד שלך כך שישתמשו ב-maybeSingle() במקום single(). להלן חלקי הקוד שיש לעדכן:בלולאת הבדיקה הראשית (שורה 218 בערך):
setInterval(async () => {
if (pc) return;
try {
// שינוי ל-maybeSingle כדי למנוע שגיאות 406
const { data, error } = await supabaseClient.from('calls').select('').eq('id', myID).maybeSingle();
if (data && data.data) {
const payload = JSON.parse(safeAtob(data.data));
if (Date.now() - payload.timestamp > 20000) {
await clearServerData();
return;
}
currentHostID = payload.fromID;
updateHeader(contacts[currentHostID] || currentHostID);
sysMsg("קריאה נכנסת...");
initWebRTC(false, payload.offer, myID);
}
} catch (e) {
console.error("שגיאה בבדיקת שיחות נכנסות:", e);
}
}, 4000);
בתוך פונקציית initWebRTC (שורה 280 בערך):
checkInterval = setInterval(async () => {
// שינוי ל-maybeSingle גם כאן
const { data } = await supabaseClient.from('calls').select('').eq('id', myID).maybeSingle();
if (data && data.data) {
const resData = JSON.parse(safeAtob(data.data));
if (resData.type === 'answer' && pc.signalingState === "have-local-offer") {
pc.setRemoteDescription(new RTCSessionDescription(JSON.parse(resData.answer)));
clearInterval(checkInterval);
}
}
}, 3000);
לאחר שתבצע את השינויים הללו בקוד ותריץ את האפליקציה דרך Localhost או דרך שרת אינטרנט מאובטח (ולא בלחיצה כפולה על הקובץ), החיבור אמור להתבצע בהצלחה.עצרתי כאן כי שרת חיצוני חסום בנטפרי [האתר לא נבדק] ודרך פייתון לא יכולתי כי באחד מהמחשבים אין, ובינתיים לא התקנתי. אם מישהו יבדוק וזה יעזור, אתקין. [למרות שאני מעדיף את הגרסה עם הקוד הארוך וללא שום שרת עזר בדרך]
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות
