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