ساخت یک سیستم اطلاع رسانی درون سازمانی قسمت دوم

در قسمت قبلی در مورد ساختار کلی پروژه و فایل permission توضیح دادیم در این قسمت قرار است فایل .env را ایجاد کرده و اطلاعاتی را که از هنگام ساخت اکانت رای کانکت دریافت کرده ایم درون آن قرار دهیم برای ساخت اکانت موقتی رای کانکت میتونید به این صفحه برید و یک اکانت رای کانکت برای خودتون دریافت کنید.کار با این صفحه خیلی سادس اسم اپتون رو انتخاب کنید و شماره موبایلتون رو وارد کنید / بعد از تایید کردن موبایلتون براتون username/password اپتون ارسال میشهاین یوزر نیم و پسورد رو در یک جای امن ذخیره کنید چون دیگه بهتون نمایش داده نمیشهمن اطلاعاتی که دریافت کردم رو درون فایل .env که خودم ایجادش کردم قرار دادم به شکل زیر مقدار APP_ID در واقع همان نام اپی است که هنگام ثبت نام مشخص کرده اید و مقدار SCOPES باید توسط برنامه نویس تعریف گردد من messages و places رو تعریف کردم هر اسکوپ رو باید با , از هم جدا کنیمخب حالا بریم سراغ فایل server.jsمن به کلیت این فایل زیاد کاری ندارم فقط اخر این فایل برامون مهمه در اخر این فایل یک کوئری به صورت پیش فرض تعریف شده است بهتر است در مورد هر کوئٰری توضیحاتی بهتون بدمدر تصویر زیر ساختار یک کوئری رو از لحاظ سینتکسی توضیح دادم و در قسمت قبلی هم به صورت کامل توضیح داده ام در متغیر data درون کالبک این کوئری اطلاعات جالبی وجود دارد که در عکس زیر توضیح داده امهر کاربر بعد از لاگین کردن در رای کانکت (مهم نیست که به چه روشی لاگین میکند) و حتی اگر مهمان باشد یک token دارد توکن کاربر یک شناسه معادل با کانکشن کاربر است که مشخص میکند کاربر دقیقا با چه دیوایسی به سیستم لاگین کرده است همچنین شما میتوانید از طریق توکن به کاربر پیامی را ارسال کنید و یا اگر کاربر یک query را پابلیک کرده باشد آن را صدا بزنید (بله درست فهمیدید هم کاربران و هم سرویس ها میتوانند یک کوئری را پابلیک کنند)من در این پروژه میخوام توکن ها رو بعد از صدا زده شدن یک کوئری اگه از قبل ثبت نشده بودن در یک جایی ثبت کنماما این ساختار برای نوشتن کوئری ها یکم کد رو زشت میکنه پس من میخوام کوئٰری ها رو از انتهای فایل server.js به یک فایل جدید به نام query.js انتقال بدم پس اون کوئری رو از انتهای فایل server.js پاک میکنم و جاش اینو میزارم require(&quot./query&quot)(miapp);حالا بریم سراغ فایل query.jsخب حله حالا کوئری رو داریم که دیتارو لاگ میکنه اما من میخوام توکن ها رو اگه قبلا ثبت نشده بودن یک جا ثبت کنم تا بتونیم به همه توکن هایی که در واقع subscribe کردند یک پیام ارسال کنیمما تا اینجای آموزش نمیخوایم از دیتابیس استفاده کنیم پس میخوایم token ها رو داخل یک ارایه ذخیره کنیم برای اینکار من میخوام یک class بسازم و داخل اون کلاس یک سری متد درست کنیم من داخل این کلاسم یک Set تعریف کردم مزیت Set این هست که مقادیرش unique هست و شما وقتی مقادری رو توش add میکنید یک بار بیشتر add نمیشه :)دوتا فانکشن Add و Next هم داخل این کلاسم رو یکی برای اد کردن مقدار جدید و دیگری رو برای پیدا کردن تک تک مقادیر این ست ازش استفاده کردمکلاسم رو در زیر میبینید : کلاس subscribe کلاسم رو داخل یک فایل به نام subs.js ذخیره کردم :) حالا تغییراتم در فایل query.js رو ببینید خط اول رو که به این فایل جهت صدا زدن کلاسم اضافه کردم و بقیشو در عکس توضیح دادمالان هر ریکوئستی که به این مسیر بیاد رو ما token اش رو به set امون اضافه میکنیمخب حالا من میخوام یک کوئری دیگه هم تعریف کنم که در صورت صدا زده شدن بتونیم باهاش یک پیامیو به همه بفرستیم من بعد از همون query در فایل query.js یک کوئری جدید به شکل زیر اضافه میکنم الان در صورت صدا زده شدن این مسیر پیام مورد نظرمون به همه کاربر ها ارسال خواهد شدبهتره کمی در مورد ساختار متد execQuery توضیح بدم متد execQuery برای صدا کردن یک کوئری استفاده میگردد / البته در حالت execQuery معمولا انتظار پاسخی از کوئری مربوطه نداریم در مثال بالا ما uniqueID را برابر * قرار داده که به معنای همه کاربران میباشد اما چون tokenID برابر یک توکن قرار داده شده است دیتا دقیقا به همان توکن ارسال میگردد بقیه موارد نیز در عکس زیر توضیح داده شده استتوضیحات کلی از متد execQueryساختار فایل query.js بعد از تغییراتمون به این شکل در اومده :در ادامه کار قراره فرانت اندمون رو با electron.js ایجاد کنیم تا بر روی سیستم های کاربرانمون نصب بشه و یک چیزیو بهشون نشون بده :) به محض اماده شدن قسمت بعدی لینکشون در همینجا براتون میزارم قسمت سوم اماده شد