המלצה | חדש חדש!! צ'אט ישיר בין מחשבים כולל שיחות וידאו ואודיו והעברת קבצים ישירה פתוח לכולם!!!!
-
@שמואל-הסיני התבלבלת המספר שלי זה 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 או דרך שרת אינטרנט מאובטח (ולא בלחיצה כפולה על הקובץ), החיבור אמור להתבצע בהצלחה.עצרתי כאן כי שרת חיצוני חסום בנטפרי [האתר לא נבדק] ודרך פייתון לא יכולתי כי באחד מהמחשבים אין, ובינתיים לא התקנתי. אם מישהו יבדוק וזה יעזור, אתקין. [למרות שאני מעדיף את הגרסה עם הקוד הארוך וללא שום שרת עזר בדרך]
-
הרצתי בין 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 או דרך שרת אינטרנט מאובטח (ולא בלחיצה כפולה על הקובץ), החיבור אמור להתבצע בהצלחה.עצרתי כאן כי שרת חיצוני חסום בנטפרי [האתר לא נבדק] ודרך פייתון לא יכולתי כי באחד מהמחשבים אין, ובינתיים לא התקנתי. אם מישהו יבדוק וזה יעזור, אתקין. [למרות שאני מעדיף את הגרסה עם הקוד הארוך וללא שום שרת עזר בדרך]
ודרך פייתון לא יכולתי כי באחד מהמחשבים אין
תנסה את התוכנה המצורפת (mongoose חפש בגוגל), תשים אותה באותה תיקיה ותריץ אותה (יפתח בקונסול) תכנס לכתובת שהAI אמר לך לוקל אוסט:000 לפי מה שרשום בחלון הקונסול (כל שאלה נוספת על התוכנה תשאל את הAI זו תוכנה ידועה)
[mongoose.exe](Invalid MIME type) mongoose
הכי טוב להוריד ע"י שמירת הקישור בשם
mongoose.exe(עשיתי את זה בגלל תקלה בפורום, והשם עד הנקודה לאו דוקא כידוע)
-
לא מזמן התוודעתי לידיעה שניתן לבצע תקשורת ישירה בין דפדפנים ללא כל צורך בשרת מתווך כלשהו, על בסיס זה הכנתי דף HTML שמבוסס על פורטוקול תקשורת ישיר בין המחשבים ללא כל שרת ביניים.
האפשרויות שהדף נותן הם:
1.שיחות צ'אט.
2. שיחות וידאו ללא הגבלה.
3. שיחות אודיו ללא הגבלה.
4. העברת קבצים ישירה ללא הגבלה.המעלות של דף זה על פני שימוש בגוגל צ'אט לדוגמה הם:
- אתה נשאר אנונימי לחלוטין וכל מה שאתה משתף עם השני זה רק מספר זיהוי כלשהו שאתה יכול להחליף בכל רגע נתון.
- אין הגבלה באורך של שיחות הוידאו.
- אין הגבלה לגודל של העברת הקבצים והם לא תופסים מקום בדרייב או בכל מקום אחר.
- מהירות העברת קבצים מקסימלית כי אינם תלויים במהירות שרת כלשהי.
- אין מגבלות אבטחה על העברת קבצים כי אינם עוברים דרך שרת כלשהו.
- עיצוב מתקדם.
- שמירת מספר הזיהוי בקבצי הקוקיס של הדפדפן לצורך מספר קבוע לשימוש חוזר.
בשביל ליצור את החיבור הראשוני בין הדפדפנים יצרתי שרת כלשהו דרך גוגל סקריפט למעביר באופן אוטומטי את קודי הזיהוי בין שני הדפדנים ומייצר מספר זיהוי קצר ופשוט לשימוש, הנתונים של השיחה לא עוברים דרכו כלל אלא הוא בסה"כ מייצר את החיבור הראשוני באופן אנונימי לחלוטין.
למי שמעוניין שגם שלב זה ייעשה באופן ישיר הכנתי גם דף שבו ניתן להעתיק את כל קוד הזיהוי אחד מהשני וכך החיבור יווצר באופן ישיר בלי צורך בכל שרת מתווך כלשהו (בתחילה יוצר השיחה מייצר קוד התחברות, הוא שולח את זה לחברו שמייצר קוד נגדי ושולח אליו וברגע שהראשון מזין חזרה את הקוד השיחה מתחילה).
אם יש בעיות בחיבור יש ללחוץ על לחצן הריענון שליד מספר הזיהוי.צ'אט מקומי ללא כל שרת.zip
עדכון ד' תמוז תשפו':
להלן גירסה חדשה יעילה יותר ואמורה לעבוד גם בחדרי מחשבים:
מעודכן.wim (עקב תקלה בהעלאה לפורום נאלצתי להעלות את זה בפורמט המוזר הזה אשר נפתח בתוכנת ZIP 7).
למי שמעוניין העליתי גם בפורמט טקסט ויש לשנות את הסיומת של הקובץ לHTML ואז הוא יעבוד רגיל בע"ה.מעודכן.TXT
אשמח לשמוע התרשמות מהציבור.
שימו לב שבהורדת קבצים שנשלחו באמצעות הדף בתור ברירת מחדל הם יורדים לתיקיית מסמכים ולא מופיעים בחלונית ההורדות בדפדפן.
אשמח לשמוע תגובות והערות והצעות לשיפור כאן בפורום או בצ'אט החדש
או במייל ARISH121548@GMAIL.COM
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות