<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های شرکت محافظ اسرار نهان آریا</title>
        <link>https://virgool.io/feed/@mrmdcode</link>
        <description>سخت کار نکنید ، هوشمندانه کاره کنید . ( البته خودم خیلی به این موضوع اهمیت نمیدم ?? )</description>
        <language>fa</language>
        <pubDate>2026-06-10 22:33:54</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>شرکت محافظ اسرار نهان آریا</title>
            <link>https://virgool.io/@mrmdcode</link>
        </image>

                    <item>
                <title>Http Client در لاراول</title>
                <link>https://virgool.io/@mrmdcode/http-client-%D8%AF%D8%B1-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-rt1vedghxwn0</link>
                <description>سلااام امروز آموزشمون درباره Http Client یا همون عمل Ajax در فریمورک لاراول هست.خب دوستان لاراول از نسخه های 5 به اینور سرویس http client رو روش بیشتر وقت گذاشت .و فقط یه چمله اضافه کنم http Client تو لاراول مثل fetch تو جاوا اسکریپت میمونه اینو فقط برای سئ**و گفتم ? .خب آموزشو شروع کنیم ....عرضم به حضورتون متد های کلاس Http از فَساد و ساپورت ایمپورت میشن .use Illuminate\Support\Facades\Http;فقط اینکه به صورت پیش فرض رو پکیجتون هست .ولی اگه نبود میتونید از کامپوزر استفاده کنید و نصبش کنید .اگه لاراول نصب کردید که وارد فولدر project شید و کد زیر رو برای نصب، بزنید وگرنه برای نصب لاراول با خط پایینیشو بزنیم . ( اشتباه شد خط بالا برای نصب لاراول ، خط پایین برای نصب پکیج برای اطمینان )#laravel installer
composer global require laravel/installer
laravel new project
# pakage install
composer require guzzlehttp/guzzleخب اولین چیزی باهاش کار میکنیم دستور get هست .درخواست های get در Http Client :use Illuminate\Support\Facades\Http;
$response = Http::get(&#039;http://example.com&#039;);حالا هر خروجی که میتونیم از response$ بگیریم رو تو کد باکس پایین براتون گذاشتم .$response-&gt;body() : string;
$response-&gt;json($key = null) : array|mixed;
$response-&gt;object() : object;
$response-&gt;collect($key = null) : Illuminate\Support\Collection;
$response-&gt;status() : int;
$response-&gt;ok() : bool;
$response-&gt;successful() : bool;
$response-&gt;redirect(): bool;
$response-&gt;failed() : bool;
$response-&gt;serverError() : bool;
$response-&gt;clientError() : bool;
$response-&gt;header($header) : string;
$response-&gt;headers() : array;اگه با JsonPlaceholder کار کرده باشید میدونید شما میتونید فقط یه سری فیلد هارو دریافت کنید برای مثال از آدرس jsonplaceholder مقادیر. به شکل زیر بگیرید .[{&amp;quotid&amp;quot: 1,&amp;quotname&amp;quot: &amp;quotLeanne Graham&amp;quot,&amp;quotusername&amp;quot: &amp;quotBret&amp;quot,&amp;quotemail&amp;quot: &amp;quotSincere@april.biz&amp;quot,&amp;quotaddress&amp;quot: {&amp;quotstreet&amp;quot: &amp;quotKulas Light&amp;quot,&amp;quotsuite&amp;quot: &amp;quotApt. 556&amp;quot,&amp;quotcity&amp;quot: &amp;quotGwenborough&amp;quot,&amp;quotzipcode&amp;quot: &amp;quot92998-3874&amp;quot,&amp;quotgeo&amp;quot: {&amp;quotlat&amp;quot: &amp;quot-37.3159&amp;quot,&amp;quotlng&amp;quot: &amp;quot81.1496&amp;quot}},&amp;quotphone&amp;quot: &amp;quot1-770-736-8031 x56442&amp;quot,&amp;quotwebsite&amp;quot: &amp;quothildegard.org&amp;quot,&amp;quotcompany&amp;quot: {&amp;quotname&amp;quot: &amp;quotRomaguera-Crona&amp;quot,&amp;quotcatchPhrase&amp;quot: &amp;quotMulti-layered client-server neural-net&amp;quot,&amp;quotbs&amp;quot: &amp;quotharness real-time e-markets&amp;quot}},{&amp;quotid&amp;quot: 2,&amp;quotname&amp;quot: &amp;quotErvin Howell&amp;quot,&amp;quotusername&amp;quot: &amp;quotAntonette&amp;quot,&amp;quotemail&amp;quot: &amp;quotShanna@melissa.tv&amp;quot,&amp;quotaddress&amp;quot: {&amp;quotstreet&amp;quot: &amp;quotVictor Plains&amp;quot,&amp;quotsuite&amp;quot: &amp;quotSuite 879&amp;quot,&amp;quotcity&amp;quot: &amp;quotWisokyburgh&amp;quot,&amp;quotzipcode&amp;quot: &amp;quot90566-7771&amp;quot,&amp;quotgeo&amp;quot: {&amp;quotlat&amp;quot: &amp;quot-43.9509&amp;quot,&amp;quotlng&amp;quot: &amp;quot-34.4618&amp;quot}},&amp;quotphone&amp;quot: &amp;quot010-692-6593 x09125&amp;quot,&amp;quotwebsite&amp;quot: &amp;quotanastasia.net&amp;quot,&amp;quotcompany&amp;quot: {&amp;quotname&amp;quot: &amp;quotDeckow-Crist&amp;quot,&amp;quotcatchPhrase&amp;quot: &amp;quotProactive didactic contingency&amp;quot,&amp;quotbs&amp;quot: &amp;quotsynergize scalable supply-chains&amp;quot}},{&amp;quotid&amp;quot: 3,&amp;quotname&amp;quot: &amp;quotClementine Bauch&amp;quot,&amp;quotusername&amp;quot: &amp;quotSamantha&amp;quot,&amp;quotemail&amp;quot: &amp;quotNathan@yesenia.net&amp;quot,&amp;quotaddress&amp;quot: {&amp;quotstreet&amp;quot: &amp;quotDouglas Extension&amp;quot,&amp;quotsuite&amp;quot: &amp;quotSuite 847&amp;quot,&amp;quotcity&amp;quot: &amp;quotMcKenziehaven&amp;quot,&amp;quotzipcode&amp;quot: &amp;quot59590-4157&amp;quot,&amp;quotgeo&amp;quot: {&amp;quotlat&amp;quot: &amp;quot-68.6102&amp;quot,&amp;quotlng&amp;quot: &amp;quot-47.0653&amp;quot}},&amp;quotphone&amp;quot: &amp;quot1-463-123-4447&amp;quot,&amp;quotwebsite&amp;quot: &amp;quotramiro.info&amp;quot,&amp;quotcompany&amp;quot: {&amp;quotname&amp;quot: &amp;quotRomaguera-Jacobson&amp;quot,&amp;quotcatchPhrase&amp;quot: &amp;quotFace to face bifurcated interface&amp;quot,&amp;quotbs&amp;quot: &amp;quote-enable strategic applications&amp;quot}}] و شما میتونید همینجا درخواست هاتونو غربال(محدود) کنید که اینا دیگه برمیگرده به RESTFUL API ها که باید دربارش بدونید ، حالا شما میخواید name بزارید ،email رو بزارید، username رو بزارید ، adress یا company رو بزارید که البته اینجا شما میتونید یه ربعد دیگه هم پیش برید مثلا تو adress میتونید فقط street یا city رو دریافت کنید .خروجی مثال بالا به این شکل میشه .   $response = Http::get(&#039;http://example.com/users/1&#039;)[&#039;name&#039;];

// response 
[ &amp;quotLeanne Graham&amp;quot,&amp;quotErvin Howell&amp;quot ,&amp;quotClementine Bauch&amp;quot] و شما میتونید همینجا درخواست هاتونو غربال(محدود) کنید که اینا دیگه برمیگرده به RESTFUL API ها که باید دربارش بدونید ، حالا شما میخواید name بزارید ،email رو بزارید، username رو بزارید ، adress یا company رو بزارید کهالبته اینجا شما میتونید یه ربعد دیگه هم پیش برید مثلا تو adress میتونید فقط street یا city رو دریافت کنید .خروجی مثال بالا به این شکل میشه .   $response = Http::get(&#039;http://example.com/users/1&#039;)[&#039;adress&#039;];


// response...
[ [&amp;quotstreet&amp;quot=&gt; &amp;quotDouglas Extension&amp;quot,&amp;quotsuite&amp;quot=&gt; &amp;quotSuite 847&amp;quot,&amp;quotcity&amp;quot=&gt; &amp;quotMcKenziehaven&amp;quot,&amp;quotzipcode&amp;quot=&gt; &amp;quot59590-4157&amp;quot,&amp;quotgeo&amp;quot=&gt; [&amp;quotlat&amp;quot=&gt; &amp;quot-68.6102&amp;quot,&amp;quotlng&amp;quot=&gt; &amp;quot-47.0653&amp;quot]] ,[&amp;quotstreet&amp;quot=&gt; &amp;quotDouglas Extension&amp;quot,&amp;quotsuite&amp;quot=&gt; &amp;quotSuite 847&amp;quot,&amp;quotcity&amp;quot=&gt; &amp;quotMcKenziehaven&amp;quot,&amp;quotzipcode&amp;quot=&gt; &amp;quot59590-4157&amp;quot,&amp;quotgeo&amp;quot=&gt; [&amp;quotlat&amp;quot=&gt; &amp;quot-68.6102&amp;quot,&amp;quotlng&amp;quot=&gt; &amp;quot-47.0653&amp;quot]]
,[&amp;quotstreet&amp;quot=&gt; &amp;quotDouglas Extension&amp;quot,&amp;quotsuite&amp;quot=&gt; &amp;quotSuite 847&amp;quot,&amp;quotcity&amp;quot=&gt; &amp;quotMcKenziehaven&amp;quot,&amp;quotzipcode&amp;quot=&gt; &amp;quot59590-4157&amp;quot,&amp;quotgeo&amp;quot=&gt; [&amp;quotlat&amp;quot=&gt; &amp;quot-68.6102&amp;quot,&amp;quotlng&amp;quot=&gt; &amp;quot-47.0653&amp;quot]]]


// # مثال دو : بعد های داخلی
$response = Http::get(&#039;http://example.com/users/1&#039;)[&#039;adress&#039;][&#039;street&#039;];

// response...
[&#039;Douglas Extension 1&#039;,&#039;Douglas Extension 2 &#039;,&#039; Douglas Extension 3 &#039;]

و اما...تو درخواست های get اگر بخوایم Query Parametr ارسال کنیم متد یه قسمت دومی ( پارامتر ) هم داره که باید به صورت آرایه (json) بفرستید .$response = Http::get(&#039;http://example.com/users&#039;, [
&#039;name&#039; =&gt; &#039;Taylor&#039;,&#039;
page&#039; =&gt; 1,
]);درخواست های post در Http Client :تو درخواست های پست داریم یحتمل ی سری دیتا رو میفرستیم که خب، باید در نظر گرفت متد post دو قسمته یکی url و دیگری body که ما باید به صورت آرایه(json) بفرستیمش .$response = Http::post(&#039;http://example.com/users&#039;, [
&#039;name&#039; =&gt; &#039;Steve&#039;,
&#039;role&#039; =&gt; &#039;Network Administrator&#039;,
]);ده  .ن.ت : در صنعت تکنلوژی هر روزه شاهد ابداع راه و روش های راه های جدید هستیم ، در این پست library یا افزونه HttpClient یاد گرفیتم . اما مبحثمون بیشتر از این حرفاست .و آموزش گسترده تری در یوتیوبمون گذاشته شده .من مهدی هستم میتونی MrMDCode صدام کنی ?</description>
                <category>شرکت محافظ اسرار نهان آریا</category>
                <author>شرکت محافظ اسرار نهان آریا</author>
                <pubDate>Wed, 21 Feb 2024 23:56:13 +0330</pubDate>
            </item>
                    <item>
                <title>زامبی های جذام ؟؟!!</title>
                <link>https://virgool.io/@mrmdcode/%D8%B2%D8%A7%D9%85%D8%A8%DB%8C-%D9%87%D8%A7%DB%8C-%D8%AC%D8%B0%D8%A7%D9%85-yevv4z8veniz</link>
                <description>سلام سلام . اومدم با یه فکت باحال و جذاب فقط میخوام پشماتونو بریزونم .چیزی درباره فیلم the Last Ship میدونید ، خلاصش اینکه دنیا مریض میشه یه کشتی میره دنبال درمان اون پیدا میکنه و واسش اتفاقاتی میوفته . حالا ....اگه فیلم باز هستید و هنو ندیدید ? جای تعحب داره و اگر هم که فیلم باز نیستید که پیشنهاد  میکنم برید ببینید .(البته به فیلم بازای عزیز بر نخوره ?)اما چه ربطی داره این به زامبی های جذامی ، اینو بگم که زامبی های جذامی یکی از موقعیت های شست و شو ی روانی (مغزی) هست ، یعنی در واقع کسایی که امنیت افکار و روانشناسی میخونن میفهمنش .دقیق تر اینکه زمانی اتفاق میوفته که دارن یک یا چند دسته از افراد رو مورد تجاوز زنجیره ای افکاری در ارامش (همون با پنبه سر بریدن ) قرار میدن .و شما در همون دسته های فریب خوده هستی برای اینکه بفهمی کارت درسته یا ن این موضوع زامبی های جذامی به شما چندتا متد میده .قبل از اینکه بریم سراغ متد ها بریم که یه نمونه رو بهتون نشون بدم ،فیلم The Last Ship فصل 2 قسمت 6 زمانی که مصون ها میفهمن که رئیس جمهور هم  مصون هست شروع به خوشحالی میکنن و کاپتان تام چندلر با دیدن این صحنه تعجب میکنه (تو مایع های دل آشوبی).در واقع مصون ها شست و شوی مغزی شده بودن و فکر میکردن ژن برتر هستن و در صدد خوشحالی برای نابودی درمان و افراد غیر مصون بودن . همینطور اونا میخواستن که رئیس جمهور هم آگاه کنن که این طرز فکر اشتباه هست .پ.ن : کاپیتان میخواد اونو آگاه کنه با روش Leprosy zombies و متد (روش هایی که داره) های اون .توضیح زاویه دید !!زاویه دید قبلش باید اینو اضافه کنم که برای هر کسی با توجه به شرایطش مینوته برعکس عمل کنه یعنی چی :شما اگه خدایی نکرده جزء داع*ش باشید یا بدتر جزء انتهاری ها یا بدتر جزء کودک های انتحاری باشید ، در جوی بزرگ میشوید که از نظر شما حمل*ه به مردم و کشتن آن ها نتنها چیزه بدی به نطر نیاید بلکه خیلی هم عادی ، یا بدتر چیز خیلی خوبی باشد . حالا اگر شما در یک جامعه ی از نطر عموم سالمی بزرگ شده باشید (پرورش یافته باشید) از نظر شما کشتن حتی حیوانات هم سخت هست چه برسد به انسان ها و شما کشت انسان ها را فقط یک جنایت میدانید . بیاید دسته A رو آدم هایی با طرز فکر داع*شی بدانیم و دسته B را آدم هایی با طرز فکر جامعه سالم بدانیم .چنانچه یک نفر از دسته A به دسته B برود تمامی آن دسته را زامبی میداند ، و اگر برعکس یعنی یک نفر از دسته B به دسته A برود تمامی دسته A را زامبی میداند. زامبی های چه کسانی هستند ؟خب حالا قاعدتا براتون سوالاتی مطرح شده از قبیل ...زامبی ها چه کسانی هستند ؟جذام در اینجا به چه معناست ؟متد های این روش چیست ؟چه کسانی زامبی هارا کنترل میکنند ؟خب سوالاتتون رو همینجا بزارید چون قراره به همش جواب داده بشه (به زبون ساده) .اول بگیم که روانشناسا اصلا از تکنیک های مهندسین اجتماع خوششون نمیاد البته بهتر بگیم به روحیه شون نمیخوره چون در اصل یکی از شاخه های روانشناسی مهندسی اجتماعه .و روانشناسا معمولا فقط مقدور به شناسایی تله های زامبی ای هستند ولی ..... ، این مهندسین اجتماع هستند که تله هارو درست میکنن و شروع به آلوده کردن شکار هاشون میکنن.خب تا اینجا فهمیدیم که مهندسین اجتماع افراد کنترلگر هستند .و زامبی های ؟؟؟ . باید بدانید در اینجا زامبی منظور همان آدم های معمولی هستند.در کل باید آدم هارو در اینجا به سه دسته تقسیم کرد ، دسته اول آدم های معمولی دسته دوم زامبی ها و دسته سوم زامبی های جذام .چگونه آدم های معمولی زامبی میشوند ؟در زمانی که شخصی تله را تشکیل میدهد ; و وقتی که افراد گول حرف ها ، وعده ها ، عمل ها و.... آن اشخاص را میخورند . از آدم های معمولی تبدیله به زامبی میشوند . اصولا در بیشتر مواقع با جملاتی مانند &quot;شما برگزیده هستید !&quot; یا &quot;فقط شما میتوانید&quot; یا &quot;اگر شما بخواهید&quot; یا &quot;چناچه ما بخواهیم&quot; یا ... شروع میشوند این در ظاهر خیلی ساده هست و فقط یک گول زدن ساده به نظر میآید اما فقط طعمه ها هستند و شروع ماچرا هستند . ولی شما این گول حرف ها ، وعده ها ، عمل ها و.... میخورید باز هم فقط یک گول زدن ساده هست .بله تا به اینجا شما زامبی شدید .بدین معنا که فقط باور دارید .چگونه آدم ها از زامبی به زامبی های جذام تبدیل میشوند ؟ با وارد کردن موج های احاطیستی آن باور را در شما تبدیل به یک (هدف ، کلیشه ، منطق ، عقیده و...) کند ، حالا شما یک زامبی جذام هستید .چطور تله هارو شناسایی کنم ؟راستیتش تقریبا از وقتی برنامه نویسی رو شروع کردم کَما کان دنبال مهندسی اجتماعی و تکنیکاش رفتم ولی اینکه بخوای تله هارو شناسایی کنی سخته . و لاقل برای کسانی که از دین ها یا فرقه های پیروی میکنن سخته چون اون ها همین الانشنم تحت تاثیر  Leprosy zombies هستن ، نمیشه گفت نشدنیه ولی سخته حتی تو کتابایی هم که با عقایده دینی نوشته شده درباره مهندسی اجتماع این بحث رو به شکلی دیگه بازگو کرده . و البته که به دیدگاه شما هم بستگی داره زمانی که داشتیم درباره زاویه دید صحبت میکردیم این بحث رو بازش کردم که تله از نظر شما کجاست !.چطور میتونیم تله هارو ایجاد کنیم ؟با توجه به قوانین سایت virgool نمیشه اینجا کامل و شسته و روفته گفت ولی برای اینکار لازم دارید یک درس روانشناسی رو لااقل خونده باشید یا کمتر لااقل چنتا کتاب درباره ش خونده باشید یا .... ر.م: با شناسایی جامعه ی هدف نیازه به شناسایی نقاط ضعف ، نقاط قوت ، آماده سازی وعده ها ، کمبود ها و متن تاثیری هست . پ.ن : اگه دقیق تر میخواید واقعا سخته که بفهمید  بسته به شرایط نیاز های بالا چیا هستن .آیا ممکنه یه زامبی ، آدم بشه ؟ جواب دادن به این سوال سخت نیست چون هنوز هدف در مرحله باور به سر میبره مثل این میمونه که من به شما بگم توی باک ماشینتون اگه سنگ رو بندازید بنزین کمتری مصرف میکنید یا بیشتر بنزید دارید ، شما میتونید قبول کنید میتونید رد کنید . میل خودتونه با منطق به قضیه نگاه کنید یا فقط کور کورانه پیروی کنید . ولی اگر من قضیه رو برای شما روشن کنم که وقتی سنگ در باک ماشین شما هست حجمی رو اشغال میکنه و این باعث میشه در درجه های پشت فرمون به مانشون بده بنزین بیشتری هست .آیا ممکنه زامبی جذام به زامبی تبدیل بشه ؟  مثال بالا برای این پرسش خیلی کار آمد نیست ، پس بدون مثال : خیر ،چون برای عقیده پیدا کردن به چیزی باید خیلی چیز های دیگه رو فدا کنی پس برای برگشت میشه گفت دیره ... البته که خب بازم احتمالش هست ، چون احتمال دیگه.ج.پ : اگه دیدین کسی سریع تغییر عقیده داد بدونید یا تظاهر میکنه زامبی جذام هست یا حذب باد هست که خب آدمای ...... هستن ( جای خالی رو خودتون میتونید پر کنید .)آیا ممکنه زامبی جذام به آدم تبدیل بشه ؟99.99% مواقع این اتفاق نمیفته ولی خب 00.01% هم یه آمار نسبی هست. البته حذب بادی هارو فراموش نکنید این آمار برای اونا صدق نمیکنه .چطور میتونیم به زامبی ها یا زامبی های جذام کمک کنیم ؟ خب این به جوانب زیادی بستگی داره . ولی چرا میشه .متد ها چیان ؟؟ ساده بگم با توجه به اینکه ممکن این پست رو افرادی ناشایسته بخونن و ازش برای افکار های پلید استفاده کنن. شرمنده ولی گفتن و توضیح دادن هرکدومش مساوی با مسلح کردن یه مریض روانی خب امیدوارم که از خوند و فهمیدن لذت برده باشید .من مهدی هستم میتونی MrMDCode صدام کنی ?</description>
                <category>شرکت محافظ اسرار نهان آریا</category>
                <author>شرکت محافظ اسرار نهان آریا</author>
                <pubDate>Mon, 12 Jun 2023 16:56:01 +0330</pubDate>
            </item>
                    <item>
                <title>ساخت websocket با  laravel websocket</title>
                <link>https://virgool.io/@mrmdcode/%D8%B3%D8%A7%D8%AE%D8%AA-websocket-%D8%A8%D8%A7-laravel-websocket-yrg79vzdkolm</link>
                <description>سلام دوستان امروز قراره بفهمیم پطور میتونیم یه websocket راه اندازی کنیم .همونطور که میدونید سرویس های زیادی برای ارائه وب سوکت ها به ما هستن از بهترین اونا میشه : سرویس pusherسرویس Socket IOسرویس alby و ......اشاره کرد .نکته : اگه اینارو میدونی و فقط کد ها و سیستم پیاده سازیش تو laravel رو همین آموزشو برو پایین .*** کد ها در آخر آموزش درج شده ***اما همونطور که میدونید هیچکس محض رضای خدا موش نمیگیره و تمامی این سرویس ها پولی هستن ، یا فقط چند ماه یا حتی چند دخواست در آن ها رایگان هست .برای نمونه  میشه به pusher اشاره کرد .خب اینجا بازم قدرت های بی حد مرز لاراول قراره شگفت زده تون کنه . پکیج laravel-websocket از کمپانی  beyondco.de رو داریم ککه خیلی به کار میاد .ولی قبل از آموزش بریم ی ذره از websocket و سیستم های REAL - TIME اطلاعات به دست بیارم که بدونیم قراره چه کنیم . خب بریم که یه سیستم request =&gt; response رو با یه real time مقایسه کنیم.تو دخواست های HTTP هی درخواست ارسال میشه و بازخورد دریافت میشه به ازای هر درخواست یک بازخورد هست .اما اگر دبه سمت راست تصویر که مربوط به در خواست های REAL -TIME هست توجه کنید یک بار درخواست ارسال میشه و در پشت درخواست HTTP شما میتونید درخواست های همزمان (Real Time ) رو شاهد باشد .پردازش درخواست های Real time رو میتونید در این آموزش مشاهده کنید .خب حالا که یه توضیح مخاصر مفیدی رو داشتیم بریم به سمت پیاده سازی در کد ها . نسخه پکیج ها و لاراول نسخه php م : &quot;php&quot;: &quot;^8.0.2&quot;لاراول    : &quot;laravel/framework&quot;: &quot;^9.19&quot;لاراول وب سوکت :&quot;beyondcode/laravel-websockets&quot;: &quot;^1.13&quot;نسخه node م : v18.12.1نسخه npm م : V8.17.0البته این مشخصات برای کسایی که با DOCKER و غیره کار میکنند . برای آموزش laravel-websocket با نسخه laravel 9 و 7 و 6 و5 میتونید آموزشش رو از اینجا ببینید .خب دیگه بیشتر از این طولش نیدم .در مرحله اول laravel رو نصب کنید .laravel new LaravelWebsocket?? خب اگه لاراول رو به صورت Global نصب نکردید هم میتونید از اینجا آموزشش رو ببینید .در مرحله بعد باید پکیج وب سوکت را در پروژه/اپلیکیشن لاراولی خود نصب کنید .composer require beyondcode/laravel-websocketsحالا وقتشه migrations های پکیج رو از vendor فراخوانی کنید .php artisan vendor:publish --provider=&amp;quotBeyondCode\LaravelWebSockets\WebSocketsServiceProvider&amp;quot --tag=&amp;quotmigrations&amp;quotخب اگه روی ویندوز دارید برنامه می نویسید یکی از شبیه ساز های سرور استفاده کنید .یا از wampserverیا از xamppserverحالا یه DataBase به اسم دلخواه خود ایجاد کنید .و با دستور زیر  Table هارو در phpmyadmin یا ... ایجاد کنید .php artisan migrate خب یکی دیگه از سرویس های provide شده رو publish کنید .حالا configre از websocket رو هم با دستور زیر فراخوانی/publish کنید .php artisan vendor:publish --provider=&amp;quotBeyondCode\LaravelWebSockets\WebSocketsServiceProvider&amp;quot --tag=&amp;quotconfig&amp;quotخداروشکر دیگه کارمون با آرتیزان و کامند لاین تموم شد.(البته فعلا ....?)حالا .... بریم سراغ کانفیگ WebSocket .فایل .env رو باز کنید ..env

BROADCAST_DRIVER=log
.....................
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=mt1
..............................فایل یبه صورت پیش فرض این شکلی هست .مراحل زیر رو برای تغییر مقادیر فایل انجام دهید .در خط  BROADCAST_DRIVE مقدار log را به pusher تغییر دهید .در خط PUSHER_APP_ID مقدار abcds را جایگزاری کنید .در خط  PUSHER_APP_KEY مقدار a1b2c3d4s5 را جایگزاری کنید .  در خط PUSHER_APP_SECRET مقدار qwertyasddf11123 را جایگزاری کنید .در خط PUSHER_HOST مقدار localhost را جایگذاری کنید .در خط PUSHER_POST مقدار 6001 را جایگذاری کنید .در خط PUSHER_SCHEME مقدار http را جایگذاری کنید .در خط PUSHER_APP_CLUSTER مقدار mt1 را جایگذاری کنید .خب بریم بگیم که یه توضیح ریزیم درباره مقداردهی های بالا بدیمدرباره ی برودکست درایور که داریم بهش سیستم pusher رو معرفی میکنیم چون در اصل هم در بک و هم در فرانت داریم از سرویس های pusher استفاده میکنیم چون هم کامله هم بهترین interface رو داره .و مقادیر APP ID , KEY , SECRET رو چون داریم سرور websocket رو خودمون میسازیم هر اسمی که بدیم به تمامی سرویس داده میشه .هاست هم که داریم میگیم برو از سروری که خودمون درست کردیم استفاده کن ، در واقع برای اتصال pusher به server های خودشه .و سر آخر PUSHER_SCHEME رو هم چون SSL ندارم از https به http تغییر میدهیم .ای بابا PUSHER_APP_CLUSTER رو فراموش کردیم ، البته چندان هم مهم نیست برای اتصال به سرور های آسیایی ، با ... استفاده میشه و چون خودمون هاستیم لازم نیست . پس فقط میزاریم باشه .در نتیجه باید یه همچین چیزی داشته باشیم..env

BROADCAST_DRIVER=pusher 
..................... 
PUSHER_APP_ID=abcds
PUSHER_APP_KEY=a1b2c3d4s5
PUSHER_APP_SECRET=a1b2c3d4s5
PUSHER_HOST=localhost
PUSHER_PORT=6001
PUSHER_SCHEME=https 
PUSHER_APP_CLUSTER=mt1 
..............................
خب بریم سراغ یه دستور دیگه ابا command line و artisan :composer require pusher/pusher-php-serverیه نکته مهم  تو سایت خود beyoncode کد زیر رو میگه ولی بخاطر اینکه هی داره به روز میشه ما ازش استفاده نمیکنیم :composer require pusher/pusher-php-server &amp;quot~3.0&amp;quot /C^ یه خب یه سَری بزنیم به فایل websocket که کانفیگش کنیم .config/websocket.php

 ..........
&#039;pusher&#039; =&gt; [
    &#039;driver&#039; =&gt; &#039;pusher&#039;,
    &#039;key&#039; =&gt; env(&#039;PUSHER_APP_KEY&#039;),
    &#039;secret&#039; =&gt; env(&#039;PUSHER_APP_SECRET&#039;),
    &#039;app_id&#039; =&gt; env(&#039;PUSHER_APP_ID&#039;),
    &#039;options&#039; =&gt; [
        &#039;host&#039; =&gt; env(&#039;PUSHER_HOST&#039;) ?: &#039;api-&#039;.env(&#039;PUSHER_APP_CLUSTER&#039;, &#039;mt1&#039;).&#039;.pusher.com&#039;,
        &#039;port&#039; =&gt; env(&#039;PUSHER_PORT&#039;, 443),
        &#039;scheme&#039; =&gt; env(&#039;PUSHER_SCHEME&#039;, &#039;https&#039;),
        &#039;encrypted&#039; =&gt; true,
        &#039;useTLS&#039; =&gt; env(&#039;PUSHER_SCHEME&#039;, &#039;https&#039;) === &#039;https&#039;,
    ],
    &#039;client_options&#039; =&gt; [
        // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html
    ],
],
.........خب نیازی به توضیح نیست ولی ما موظفیم دیگه تمامی خط ها ، همه data ها رو از environment یا .env اطلاعاتی که دادیم رو جایگذاری میکنیم  .البته یه ارورر اینجا قراره داشته باشیم . تو option تو host یه شرط گذاشته که وصل شه به سایتای pusher برا همین ما برش میداریم  ...............
&#039;options&#039; =&gt; [
         &#039;host&#039; =&gt; env(&#039;PUSHER_HOST&#039;) ,
..............و بعد از مرحله قبل باید بریم سراغ app.php تو پوشه config کد زیرو از حالت کامنت دربیارید .config/app.php

App\Providers\BroadcastServiceProvider::class,خب دیگه کار راه اندازی بک تموم شد .یکی از ترمینال هارو باز کنید و دستور زیر رو اجرا کنید .// terminal 1
php artisan serv و با باز کردن مرورگر و رفتن به آدرس http://localhost:8000/ ،باید شاهد عکس زیر باشید .یک ترمینال دیگر را باز کنید و دستور زیر را اجرا کنید .php artisan websocket:servو در ترمینال شاهد این باشید .خب حالا وارد لینک زیر شوید ، تبریک میگم شما در داشبورد websocket خود هستید .LARAVEL WEBSOCKET با زدن دکمه connect باید شاهد به عمل آمدن نمودار و event و ... باشیم .dashboard laravel websocketترمینال وب سوکت ساخت websocket application با لاراولخب حالا با دستور زیر یک event بسازید با اسم دلخواه اما در نظر داشته باشید که قراره براتون ثبت و ارسال دیتا رو تو websocket انجام بده . البته بهتر فقط بگیم &quot;ارسال دیتا&quot; چون ثبت اون مقوله ی گسترده ای داره و حتی منم بلد نیستم ?.حالا ن در اون حد که بلد نباشم ولی به چند روش انجام میشه یکیش مثلا listener ها هست ، حالا از بحث دور نشیم.پس event رو بسازید .php artisan make:event SendMessو الان event ساخته شده رو باز کنید باید مشابه (دقیقا کد زیر باشد ) .app/events/ChatMess.php
&lt;?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class ChatMess
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel(&#039;channel-name&#039;);
    }
}این event شماست که به 3 بخش کلی تقسیم میشه و باید چند بخش هم خودمون اضافه کنیم .بخش اول  constructor:  در اینجا شما باید تمام مقادیر که میخواهید وارد websocket شن رو مدیریت کنین.بخش دوم variable : شما باید در بالا ترین سطح ممکن که در اینجا پایین use s و بعد تعریف کلاس هست متغیر هاتونو  تعریف کنید .بخش سوم broadcastingOn : پاس دادن متغیر در چنل ها رو ، این طابع مشخص میشود .بهتر بگیم آدرس channel هاست . اما این فقط یه event باید قشنگ چکش کاریش کنیم ، و باز هم در مرحله اول در قسمت تعریف کلاس شما باید implements کنید از ShouldBroadcast .در مرحله دوم پارامتر ها و variable ها رو تعریف کنید که اینجا دوتا داریم یک $Message و دو $Username که بهتره فل حال public باشن . در مرحله سوم متغیر هارو مقدار دهی میکنیم در کانستراکتور .در مرحله چهارم PrivateChannel رو به Channel تغییر میدیم .خب تا اینجا فقط چکش کاریش بود حالا یه سری قسمت ها رو باید اضافه کرد .قسمت اول function BroadcastAs هستش که نام event یا بهتر نام جایگزین event را برمیگرداند .قسمت دوم function BroadCastWith هستش که مقدار هارو تو websocket برمیگردونه . که میشه کد زیر :&lt;?php

namespace App\Events;

use http\Message;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class ChatMessage implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    public $Message  ,$username;

    public function __construct($m ,$u)
    {
        $this-&gt;Message = $m;
        $this-&gt;username = $u;
    }

    public function broadcastOn()
    {
        return new Channel(&#039;my-channel-name&#039;);
    }

    public function broadcastAs()
    {
        return &amp;quotCHM&amp;quot
    }

    public function broadcastWith()
    {
        return [
            &#039;username&#039; =&gt; $this-&gt;username,
            &#039;message&#039; =&gt; $this-&gt;Message
        ];
    }
}خب کارمون با php فل حال تمومه .# بریم سراغ jsلازمه که همینجا پوشه وکل node_module رو نصب کنیم .و بعد باید pusher-js و laravel-echo رو با دستورات زیر نصب کنید .terminal :// کد های ترمینال
npm install
npm install -s laravel-echo pusher-js بعد این بریم تو پوشه resource و بعد تو js و bootstrap.js رو باز کنید .حاجی این bootstrap.js اون بوت استرپ &quot;فریمورک css &quot;نیستا .....خداروشکر اینجا کدای اتصال به websocket هست فقط باید از کامنت درش بیاریم .import _ from &#039;lodash&#039;;
window._ = _;

/**
 * We&#039;ll load the axios HTTP library which allows us to easily issue requests
 * to our Laravel back-end. This library automatically handles sending the
 * CSRF token as a header based on the value of the &amp;quotXSRF&amp;quot token cookie.
 */

import axios from &#039;axios&#039;;
window.axios = axios;

window.axios.defaults.headers.common[&#039;X-Requested-With&#039;] = &#039;XMLHttpRequest&#039;;

/**
 * Echo exposes an expressive API for subscribing to channels and listening
 * for events that are broadcast by Laravel. Echo and event broadcasting
 * allows your team to easily build robust real-time web applications.
 */

import Echo from &#039;laravel-echo&#039;;

import Pusher from &#039;pusher-js&#039;;
window.Pusher = Pusher;

window.Echo = new Echo({
    broadcaster: &#039;pusher&#039;,
    key: import.meta.env.VITE_PUSHER_APP_KEY,
    cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? &#039;mt1&#039;,
    wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`,
    wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80,
    wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443,
    forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? &#039;https&#039;) === &#039;https&#039;,
    enabledTransports: [&#039;ws&#039;, &#039;wss&#039;],
});از خط 21 به پایین مد نظر ماست که باید یه توضیح ریزی بدم .اول pusher-js  و laravel-echo رو import میکینم , دوباره باید تمام مقدارایی که تو config/websocket.php دادیم رو هم اینجا بدیم ولی خی چون لاراول از سیستم environment استفاده میکنه فقط همون دفعه اول تو فایل .env نیاز بود و دیگه نیازی نیست .البته لازم به ذکر که تا اینجا یه erorr داریم که مربوط میشه به خط 30 اگه یادتون باشه گفتیم چون داریم از سیستم آماده pusher استفاده میکنیم فقط با یه سری تغییرات تو configre سرور نیازی به تغییر یا ساخت یه رابط جدید نیست پس تغییرات زیادی تو داده نشده و چون این کد برای استفاده مستقیم خوده سرویس pusher  برنامه نویساش برای هاست نیاز دونستن برای سرعت بالا از تغییر لوکیشن استفاده کنن. پس خط 30 رو به کد زیر تغییر بدید .    wsHost: import.meta.env.VITE_PUSHER_HOSTو cluster هم به دردمون نمیخوره و چون امکان ایجاد خطا رو میده برش میداریم و با کد زیر جا به جاش میکنیم.cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER,حالا به resource/js/app.js برید و یه متغیر از نو const ایجاد کنید و یک چنل رو با Echo تو آماده سازی کنید .const channel = Echo.channel(&#039;my-channel-name&#039;);حالا listener بزاریدش ChatMess یا CHM ، این به این معنی که هر وقت رو اون channel ها با این event یا این رویداد اتفاق افتاد ، هر واکنشی براش تعریف کنیم رو انجام میده .پس :channel.listen(&#039;CHM&#039;,(e)=&gt;{
    console.log(e.username , e.message);
});چنل رو که بالا مقدار دهی کردیم هیچ ، بعد میایم منتظرش میزاریم تا event که تو Php نوشتیم اجرا بشه و بعد مقادیر مورد نظر رو log میگیریم . و برای اینکه کد خوانا تر باشه app.js رو یه ذره تغییرش میدیمimport &#039;./bootstrap&#039;;
let MessagesBox = document.getElementById(&amp;quotMessages&amp;quot);

const channel = Echo.channel(&#039;my-channel-name&#039;);
channel.listen(&#039;CHM&#039;,(e)=&gt;{
    MessagesBox += `&lt;li&gt;${e.username} : ${e.message}&lt;/li&gt;`
});
//تفاوتش با بالا تو اینه که با هر رویدادی یه ال ای تو المنتی با کلاس مسیج اضافه میشه.و از اونجایی که ما js مینویسم ن node بهتر که یه view ایجاد  کنید یا مثل من از welcome.blage.php استفاده کنید .برید تو resource/view/welcome.blade.php همه چیو پاک کنید و فقط کد زیرو اجرا بگیرید :&lt;!doctype html&gt;
&lt;html lang=&amp;quoten&amp;quot&gt;
&lt;head&gt;
    &lt;meta charset=&amp;quotUTF-8&amp;quot&gt;
    &lt;meta name=&amp;quotviewport&amp;quot
          content=&amp;quotwidth=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0&amp;quot&gt;
    &lt;meta http-equiv=&amp;quotX-UA-Compatible&amp;quot content=&amp;quotie=edge&amp;quot&gt;
    &lt;title&gt;Document&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    @vite(&#039;resource/css/app.css&#039;)

             &lt;ul id=&amp;quotMessages&amp;quot&gt;
             &lt;/ul&gt;
    
    @vite(&#039;resource/js/app.js&#039;)
&lt;/body&gt;
&lt;/html&gt;و برای اجرای کد های js از دستور زیر در خط فرمان استفاده کنید .npm run devفقط لازمه تو routes/web.php یه route ایجاد کرد و event رو فراخونی کرد .Route::get(&#039;/event&#039;, function () {
    broadcast(new \App\Events\ChatMessage(&#039;hi&#039;,&amp;quotmahdi&amp;quot));
});تمومه .ممنون میشم نظراتتون رو برام بنویسید .</description>
                <category>شرکت محافظ اسرار نهان آریا</category>
                <author>شرکت محافظ اسرار نهان آریا</author>
                <pubDate>Thu, 05 Jan 2023 02:58:27 +0330</pubDate>
            </item>
            </channel>
</rss>