درود بر همه دوستان، دوست داشتنی
آقا به بخش بحث و گفتگو راکت websocket رو اضافه کردیم، کار جالبی شده بنظرم فعلا اتفاقهای که در زیر میگم به شکل realtime بدونِ رفرش شدن صفحه میافته
دو صفحه، لیست گفتگوها و صفحه داخلی گفتگو با اتفاقهای زیر بدونه رفرش شدن صفحه آپدیت میشن
اگر دیدگاهی برای بهبود این سیستم realtime دارید، در زیر برامون بفرستید تا این سیستم رو کاملتر کنیم، خواهشا نظرتون مربوط به عنوان این گفتگو باشه هر پیشنهاد دیگهای در مورد بخش های دیگه داشتید میتونید در گفتگو اعلان باگ در راکت یا گفتگو چه امکاناتی باید به راکت اضافه شود با ما به اشتراک بزارید
@hesammousavi
سلام، ببخشید در این صفحه زمان به روزرسانی می شود، یعنی مثلا نوشته است، که 7 دقیقه پیش توسط نیما - ش گفتگو آپدیت شد، اما وقتی به صفحه گفتگوها برمیگردم چنین چیزی را ننوشته است، هنوز نوشته است 5 دقیقه پیش توسط نیما - ش آپدیت شد، یعنی زمانی که صفحه بحث و گفتگوها باز شده بود.
اما الآن وقتی به این صفحه برگشتم، ابتدا نوشته بود 7 دقیقه پیش توسط نیما - ش آپدیت شد، اما بعد از چند ثانیه نوشت 40 ثانیه پیش توسط محمدرضا شاهدی آپدیت شد، اما وقتی برمیگردم به لیست گفتگوها باز هم نوشته است 5 دقیقه پیش توسط نیما - ش آپدیت شد.
مثلا الآن کنار گفتگوی من نوشته است 3 دقیقه پیش، اما بالای گفتگو نوشته است 1 دقیقه پیش توسط محمدرضا شاهدی آپدیت شد.
الآن یکی از کاربران پیامش را ویرایش کرد، که به درستی هم در زمان نوشت که توسط چه کسی چند ثانیه پیش گفتگو آپدیت شد، هم پیامش بدون رفرش ویرایش شد. شاید مشکلی که گفتم فقط برای شخص ارسال کننده پیش می آید.
در هر صورت ممنون از اضافه کردن این ویژگی به سایت راکت 🙏
@mshahedi83
زمانی که یک آپدیت صورت بگیره
مثلا پاسخی لایک بشه یا پاسخ جدید ارسال بشه همه اطلاعات این صفحه آپدیت میشن
اما میشه اینکارو هم کرد که زمان با بودن در این صفحه آپدیت بشه البته این ربطی به websocket نداره و میشه انجامش داد به سادگی
این مورد رو هم امروز اضافه میکنیم تا بیشتر حس realtime بودن بده
@hesammousavi
سلام، الآن وقتی در این صفحه بودم، سریع پیام شما آمد و در بالای صفحه هم نوشت که 0 ثانیه پیش توسط حسام موسوی آپدیت شد، اما وقتی برگشتم، هنوز در صفحه لیست گفتگوها نوشته بود، 5 دقیقه پیش توسط نیما - ش آپدیت شد، وقتی دوباره به این گفتگو برگشتم، نوشته بود، 1 دقیقه پیش توسط محمدرضا شاهدی آپدیت شد و پیام شما هم پاک شده بود، اما وقتی صفحه را رفرش کردم، درست شد، دقیقا نمی دانم که مشکل است، یا نه اما به نظرم بهتر است اطلاع بدهم.
حق با شماست، من با websocket آشنایی ندارم و websocket را نمی شناسم، اما طبق مواردی که در بالا نوشته بودید که باید بدون رفرش آپدیت شوند، این حرف را می زنم.
@hesammousavi
الآن که با کلید برگشت، برگشتم به لیست و دوباره به این صفحه برگشتم، نوشته است 43 ثانیه پیش توسط حسام موسوی آپدیت شد و پیام من را پاک کرده است!
البته با رفرش کردن صفحه مشکل حل می شود.
@hesammousavi
خیلی ممنون 🙏
اما باز هم وقتی این پیام را فرستادم و برگشتم به لیست گفتگوها و دوباره برگشتم به اینجا همین پیام پاک شده بود و نبود، اما بار رفرش کردن این پیام هم آمد، البته شاید هم به خاطر پاک نکردن کش مرورگر باشد، من چند بار امتحان می کنم، نتیجه را اطلاع می دهم.
مشکل هماهنگ نبودن زمان لیست گفتگوها و خود گفتگو برطرف شده است.
اما وقتی مثلا خط بالا را به متن اضافه کردم و برگشتم به لیست و دوباره برگشتم به اینجا، خط بالا نبود، فکر می کنم یک مرحله قبل را نمایش می دهد، وقتی پاسخ جدید اضافه می کنم، زمانی را نشان می دهد که آن پاسخ نبوده است، وقتی هم یک قسمتی را به متن اضافه می کند، وقتی را نشان می دهد که آن خط اضافه نشده بود. البته واقعا به نظرم این مشکل محسوب نمی شود که یکبار برگردم به لیست گفتگوها و دوباره به اینجا برگردم، تا ببینم که چرا چند تا تغییر اعمال نشده اند. اما خوب اگر مشکل است، بدین شکل است.
@shadecute3
در دوره livewire قرار دادیم روش استفاده از websocket رو
اما در یک دوره جداگانه لاراولی بدونه livewire هم قرار میدیم
یک سوال فنی 😅
این هدر وبسایت که هرچندثانیه یکبار درخواست AJAX میزنه به سرور فشار نمیاره ؟
آیا این درخواست ها با همون polling لایووایر هستش؟ چون تگ اینو ندیدم ؟ 😅🙏
بنظرم آنلاین بودن کاربر رو هم مثه زمان، لایک و پست های جدید بروز کنید خیلی عالی میشه، یه 5 دقیقه صبر کردم جواب شما رو ببینم دیدم جوابی نیامد ریفرش کردم دیدم آنلاین نیستین ، در صورتی که توی صفحه زمان آپدیت شد ولی آنلاین بودن کاربر روی آواتار ریفرش نشد.
یک مشکل دیگه هم هست داشتم پیام قبلی رو ویرایش میکردم صفحه یهو ریفرش شد و فرم ویرایش خالی شد، فکر کنم کاربری لایک کرده یا پیامی گذاشته باعث شده ایونت ریفرش شدن کل صفحه اجرا بشه!
سلام مهندس @juza66
اون رفرش و ارسال به سرور که می بینید با عنوان layout.header اصلا منظور هدر سایت نیست اگر تب response که دریافت میشه رو نگاه کنید هیچ دیتایی برگشت داده نمیشه . به احتمال زیاد اون ریکوست ها مربوط میشه به eventlistener هست که websoocket فراخوانیش میکنه .
ولی باز یجور بهینه سازی نیاز داره چون بعضی مواقع از 500ms میگذره و یجور روی سرور فشار میاره اگه تعداد کاربر ها زیاد بشه
به نظرم باید طوری بشه که وقتی کاربر صفحه رو نمیبینه مثل wire:poll لاراول از کار بیوفته تا سرور به فشار نیوفته.
سپاس @mahdavi
اره دیدم ولی سوال برام بود اگر ایونت قرار اینو هدر رو فایر کنه چرا هر چندثانیه یکبار درخواست ارسال میشه درصورتی که هیچ پیامی برام نمیاد. اگر برای همه هستش که خوب هیچ ولی اگر هدف اینه که اگر پیامی برای من کاربر قرار دریافت بشه و ایونتی فایر میشه فقط یکبار هدر درخواست زده بشه بنظرم کافیه .
@juza66
@mahdavi
اون header که شما میبینی مربوط به websocket نمیشه، این نوع از آپدیت هر چند ثانیه اتفاق می افته فشاری نمیاره ، فعلا این شکلیه تا بعدا ببینیم چیکار باید کنیم با اون
فعلا هر 20 ثانیه روی tabهای فعال هست مربوط به wire:poll میشه
درمورد انلاین بودن کاربر و این داستانها کم کم اضافه میکنیم، قدم به قدم
اون مشکل ویرایش که داشتید میکردید پاک شد رو حتما بررسی میکنم و حلش میکنم
@juza66 اگه قرار بر یکبار صدا زده شدن باشه که اصلا معنی realtime از بین میره . ولی اینکه به صورت اتوماتیک هر چند ثانیه یکبار بدون اینکه صفحه دیتای جدیدی داشته باشه اتفاق میوفته یجور بار اضافی رو سرور میاره و باید بهینه بشه .
چند مورد هم مورد توجه هست :
1- تاریخ انتشار گفتگو یا پاسخ گفتگو از زمانی هست که شروع به نوشتن متن داخل ادیتور میکنیم نه از زمانی که ثبت رو میزنیم که این به نظرم نیاز به اصلاح داره (اقای @mshahedi83 بهش اشاره کردند)
2- ویرایش عملا تحت تاثیر همون رکیوست های متعدد قرار میگیره و بعضا درست در زمانی اتفاق میوفته که دکمه ویرایش رو میزنیم و باعث میشه متن داخل ادیتور به کلی پاک بشه
3- بخش افزودن پاسخ قسمت تجربه بروز نمیشه تا صفحه رفرش کامل بشه (که مغایرت پیش میاد)
4- رفرش به صورت اتوماتیک صورت میگیره و کل کامپوننت پاسخ رفرش میشه و اگه از network سرعت رو کم کنیم میبینیم که دیتای عکس و متن همشون دوباره از سرور دریافت میشن که به نظرم واقعا به سرور فشار میاره و نیازی به این کار نیست
5- اینکه از websoocket به صورت کامل استفاده شده یا با ادغام wire:poll و رکوست های livewire ترکیب شده مهندس موسوی @hesammousavi باید بگن ولی اونی که مشخصه رکیوست های زیاد و بعضا بی موردی به سرور میره
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟