راکت

راکت با طعم websocket

47 پاسخ

درود بر همه دوستان، دوست داشتنی
آقا به بخش بحث و گفتگو راکت websocket رو اضافه کردیم، کار جالبی شده بنظرم فعلا اتفاق‌های که در زیر میگم به شکل realtime بدونِ رفرش شدن صفحه می‌افته
دو صفحه، لیست گفتگوها و صفحه داخلی گفتگو با اتفاق‌های زیر بدونه رفرش شدن صفحه آپدیت میشن

  • در صورت اضافه شدن گفتگو جدید
  • ویرایش گفتگو
  • اضافه شدن پاسخ جدید
  • ویرایش شدن پاسخ
  • حذف شدن پاسخ
  • لایک شدن گفتگو یا پاسخ

اگر دیدگاهی برای بهبود این سیستم realtime دارید، در زیر برامون بفرستید تا این سیستم رو کامل‌تر کنیم، خواهشا نظرتون مربوط به عنوان این گفتگو باشه هر پیشنهاد دیگه‌ای در مورد بخش های دیگه داشتید میتونید در گفتگو اعلان باگ در راکت یا گفتگو چه امکاناتی باید به راکت اضافه شود با ما به اشتراک بزارید

ثبت پرسش جدید

پاسخ‌ها

47
MojtabaaVDev
MojtabaaVDev
@MojtabaaVDev

موقع اضافه کردن اوکی بود، ولی موقع ویرایش خطای سرور داد(البته تغییرش ثبت شد).

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

@MojtabaaVDev
مشکل ویرایش هم حل شد سپاس از اطلاع شما

شاید پاسخ شما همین‌جا باشد

نیما  ش
نیما ش
@nimageneral

تخصص: برنامه نویس وب

عالی شده حسام جان 👍

محمدرضا شاهدی
محمدرضا شاهدی
@mshahedi83

@hesammousavi
سلام، ببخشید در این صفحه زمان به روزرسانی می شود، یعنی مثلا نوشته است، که 7 دقیقه پیش توسط نیما - ش گفتگو آپدیت شد، اما وقتی به صفحه گفتگوها برمیگردم چنین چیزی را ننوشته است، هنوز نوشته است 5 دقیقه پیش توسط نیما - ش آپدیت شد، یعنی زمانی که صفحه بحث و گفتگوها باز شده بود.
اما الآن وقتی به این صفحه برگشتم، ابتدا نوشته بود 7 دقیقه پیش توسط نیما - ش آپدیت شد، اما بعد از چند ثانیه نوشت 40 ثانیه پیش توسط محمدرضا شاهدی آپدیت شد، اما وقتی برمیگردم به لیست گفتگوها باز هم نوشته است 5 دقیقه پیش توسط نیما - ش آپدیت شد.

مثلا الآن کنار گفتگوی من نوشته است 3 دقیقه پیش، اما بالای گفتگو نوشته است 1 دقیقه پیش توسط محمدرضا شاهدی آپدیت شد.

الآن یکی از کاربران پیامش را ویرایش کرد، که به درستی هم در زمان نوشت که توسط چه کسی چند ثانیه پیش گفتگو آپدیت شد، هم پیامش بدون رفرش ویرایش شد. شاید مشکلی که گفتم فقط برای شخص ارسال کننده پیش می آید.
در هر صورت ممنون از اضافه کردن این ویژگی به سایت راکت 🙏

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

@mshahedi83
زمانی که یک آپدیت صورت بگیره
مثلا پاسخی لایک بشه یا پاسخ جدید ارسال بشه همه اطلاعات این صفحه آپدیت میشن
اما میشه اینکارو هم کرد که زمان با بودن در این صفحه آپدیت بشه البته این ربطی به websocket نداره و میشه انجامش داد به سادگی
این مورد رو هم امروز اضافه میکنیم تا بیشتر حس realtime بودن بده

محمدرضا شاهدی
محمدرضا شاهدی
@mshahedi83

@hesammousavi
سلام، الآن وقتی در این صفحه بودم، سریع پیام شما آمد و در بالای صفحه هم نوشت که 0 ثانیه پیش توسط حسام موسوی آپدیت شد، اما وقتی برگشتم، هنوز در صفحه لیست گفتگوها نوشته بود، 5 دقیقه پیش توسط نیما - ش آپدیت شد، وقتی دوباره به این گفتگو برگشتم، نوشته بود، 1 دقیقه پیش توسط محمدرضا شاهدی آپدیت شد و پیام شما هم پاک شده بود، اما وقتی صفحه را رفرش کردم، درست شد، دقیقا نمی دانم که مشکل است، یا نه اما به نظرم بهتر است اطلاع بدهم.
حق با شماست، من با websocket آشنایی ندارم و websocket را نمی شناسم، اما طبق مواردی که در بالا نوشته بودید که باید بدون رفرش آپدیت شوند، این حرف را می زنم.

محمدرضا شاهدی
محمدرضا شاهدی
@mshahedi83

@hesammousavi
الآن که با کلید برگشت، برگشتم به لیست و دوباره به این صفحه برگشتم، نوشته است 43 ثانیه پیش توسط حسام موسوی آپدیت شد و پیام من را پاک کرده است!
توضیح تصویر رو وارد کنید
البته با رفرش کردن صفحه مشکل حل می شود.

نیما
نیما
@shadecute3

خیلی عالیه تبریک میگم
ممنون از شما
آموزش websocket میزارید؟

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

ایول دارین کارتون حرف نداره 👊

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

@mshahedi83
الان این تایم هم با رفرش نشدن آپدیت میشه

@juza66
مخلصیم علی جان 😅

سید حسین موسوی
سید حسین موسوی
@shm379

تخصص: بک اند دولوپر (لاراول) فرانت (ویو جی اس)

خیلی جالبه ٬ جالب تر از اون اینه که ماشالله همه تستر های قوی هستیم!

محمدرضا شاهدی
محمدرضا شاهدی
@mshahedi83

@hesammousavi
خیلی ممنون 🙏
اما باز هم وقتی این پیام را فرستادم و برگشتم به لیست گفتگوها و دوباره برگشتم به اینجا همین پیام پاک شده بود و نبود، اما بار رفرش کردن این پیام هم آمد، البته شاید هم به خاطر پاک نکردن کش مرورگر باشد، من چند بار امتحان می کنم، نتیجه را اطلاع می دهم.
مشکل هماهنگ نبودن زمان لیست گفتگوها و خود گفتگو برطرف شده است.
اما وقتی مثلا خط بالا را به متن اضافه کردم و برگشتم به لیست و دوباره برگشتم به اینجا، خط بالا نبود، فکر می کنم یک مرحله قبل را نمایش می دهد، وقتی پاسخ جدید اضافه می کنم، زمانی را نشان می دهد که آن پاسخ نبوده است، وقتی هم یک قسمتی را به متن اضافه می کند، وقتی را نشان می دهد که آن خط اضافه نشده بود. البته واقعا به نظرم این مشکل محسوب نمی شود که یکبار برگردم به لیست گفتگوها و دوباره به اینجا برگردم، تا ببینم که چرا چند تا تغییر اعمال نشده اند. اما خوب اگر مشکل است، بدین شکل است.

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

@shadecute3
در دوره livewire قرار دادیم روش استفاده از websocket رو
اما در یک دوره جداگانه لاراولی بدونه livewire هم قرار میدیم

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

یک سوال فنی 😅
این هدر وبسایت که هرچندثانیه یکبار درخواست AJAX میزنه به سرور فشار نمیاره ؟
آیا این درخواست ها با همون polling لایووایر هستش؟ چون تگ اینو ندیدم ؟ 😅🙏

توضیح تصویر رو وارد کنید

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

بنظرم آنلاین بودن کاربر رو هم مثه زمان، لایک و پست های جدید بروز کنید خیلی عالی میشه، یه 5 دقیقه صبر کردم جواب شما رو ببینم دیدم جوابی نیامد ریفرش کردم دیدم آنلاین نیستین ، در صورتی که توی صفحه زمان آپدیت شد ولی آنلاین بودن کاربر روی آواتار ریفرش نشد.

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

یک مشکل دیگه هم هست داشتم پیام قبلی رو ویرایش میکردم صفحه یهو ریفرش شد و فرم ویرایش خالی شد، فکر کنم کاربری لایک کرده یا پیامی گذاشته باعث شده ایونت ریفرش شدن کل صفحه اجرا بشه!

علی مهدوی
علی مهدوی
@mahdavi

تخصص: طراح و توسعه دهنده وب

سلام مهندس @juza66
اون رفرش و ارسال به سرور که می بینید با عنوان layout.header اصلا منظور هدر سایت نیست اگر تب response که دریافت میشه رو نگاه کنید هیچ دیتایی برگشت داده نمیشه . به احتمال زیاد اون ریکوست ها مربوط میشه به eventlistener هست که websoocket فراخوانیش میکنه .
ولی باز یجور بهینه سازی نیاز داره چون بعضی مواقع از 500ms میگذره و یجور روی سرور فشار میاره اگه تعداد کاربر ها زیاد بشه
به نظرم باید طوری بشه که وقتی کاربر صفحه رو نمیبینه مثل wire:poll لاراول از کار بیوفته تا سرور به فشار نیوفته.

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

سپاس @mahdavi
اره دیدم ولی سوال برام بود اگر ایونت قرار اینو هدر رو فایر کنه چرا هر چندثانیه یکبار درخواست ارسال میشه درصورتی که هیچ پیامی برام نمیاد. اگر برای همه هستش که خوب هیچ ولی اگر هدف اینه که اگر پیامی برای من کاربر قرار دریافت بشه و ایونتی فایر میشه فقط یکبار هدر درخواست زده بشه بنظرم کافیه .

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

@juza66
@mahdavi
اون header که شما میبینی مربوط به websocket نمیشه، این نوع از آپدیت هر چند ثانیه اتفاق می افته فشاری نمیاره ، فعلا این شکلیه تا بعدا ببینیم چیکار باید کنیم با اون
فعلا هر 20 ثانیه روی tabهای فعال هست مربوط به wire:poll میشه
درمورد انلاین بودن کاربر و این داستان‌ها کم کم اضافه میکنیم، قدم به قدم
اون مشکل ویرایش که داشتید میکردید پاک شد رو حتما بررسی میکنم و حلش میکنم

علی مهدوی
علی مهدوی
@mahdavi

تخصص: طراح و توسعه دهنده وب

@juza66 اگه قرار بر یکبار صدا زده شدن باشه که اصلا معنی realtime از بین میره . ولی اینکه به صورت اتوماتیک هر چند ثانیه یکبار بدون اینکه صفحه دیتای جدیدی داشته باشه اتفاق میوفته یجور بار اضافی رو سرور میاره و باید بهینه بشه .

چند مورد هم مورد توجه هست :
1- تاریخ انتشار گفتگو یا پاسخ گفتگو از زمانی هست که شروع به نوشتن متن داخل ادیتور میکنیم نه از زمانی که ثبت رو میزنیم که این به نظرم نیاز به اصلاح داره (اقای @mshahedi83 بهش اشاره کردند)
2- ویرایش عملا تحت تاثیر همون رکیوست های متعدد قرار میگیره و بعضا درست در زمانی اتفاق میوفته که دکمه ویرایش رو میزنیم و باعث میشه متن داخل ادیتور به کلی پاک بشه
3- بخش افزودن پاسخ قسمت تجربه بروز نمیشه تا صفحه رفرش کامل بشه (که مغایرت پیش میاد)
4- رفرش به صورت اتوماتیک صورت میگیره و کل کامپوننت پاسخ رفرش میشه و اگه از network سرعت رو کم کنیم میبینیم که دیتای عکس و متن همشون دوباره از سرور دریافت میشن که به نظرم واقعا به سرور فشار میاره و نیازی به این کار نیست
5- اینکه از websoocket به صورت کامل استفاده شده یا با ادغام wire:poll و رکوست های livewire ترکیب شده مهندس موسوی @hesammousavi باید بگن ولی اونی که مشخصه رکیوست های زیاد و بعضا بی موردی به سرور میره

صفحه 1 از 3

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام