uWebSockets.js 
تتمثل نية بروتوكول المراسلة وخادم الدردشة ، والتي تختلف عن الآخرين ، في توفير حل بديل لبروتوكول مراسلة XMPP على نطاق واسع (ولكي نكون صادقين - المعيار الواسع "المعيار" في هذه الأيام).
اقرأ المنشورات المتوسطة الكاملة التي تقدم SAMA وما هو Sama حول ما هو Sama والمشاكل التي نحاول حلها معها:
تطبيق Frontend (Web + Mobile) متاح على https://github.com/sama-communications/sama-client
Node 18 ..env.example إلى .env .docker-compose -f docker-compose.yml -f docker-compose.development.yml up الخدمات المعتمدة (Mongodb ، minio ، redis)npm install لتثبيت التبعياتnpm run migrate-mongo-up لتشغيل ترحيل DBnpm run start Server (في حالة التشغيل تحت Windows - انظر #128)ws://localhost:9001هناك أيضًا مكونات أخرى متوفرة في Sama Stack - تحقق من نشر Sama Chat Server مكدس: دليل شامل
يمكن أن يتم نشر تطبيق SAMA بسهولة باستخدام Docker ، سواء كنت تريد إعدادًا كاملاً مع جميع التبعيات أو بيئة محلية مع التطبيقات الرئيسية. فيما يلي خطوات متابعة:
هذا النهج يبني ويدير تطبيق SAMA بأكمله ، بما في ذلك جميع التبعيات ، في أمر واحد. إنه مثالي لإعداد البيئة الكاملة بسرعة.
للنشر باستخدام هذه الطريقة ، قم بتشغيل:
docker-compose -f docker-compose-full.yml up --build
لتشغيل خدمات التبعية إلى جانب تطبيقات SAMA الرئيسية ( sama-client ، sama-server ، و sama-push-daemon ) ، استخدم:
docker-compose up --build
SAMA ، أضف هذين المتغيرين قبل أمر الإطلاق:
ماكوس
MINIO_ENDPOINT=$(ipconfig getifaddr en0) MINIO_PORT=9010
النوافذ
$env:MINIO_ENDPOINT = (Get-NetIPAddress | Where-Object { $_.AddressFamily -eq 'IPv4' -and $_.IPAddress -match '^192.168.|^10.|^172.(1[6-9]|2[0-9]|3[0-1]).' } | Select-Object -ExpandProperty IPAddress)[1]; $env:MINIO_PORT = 9010;
إذا كنت تواجه مشكلات مع المرفقات في عميل الويب ، فهذا يشير إلى حدوث خطأ في المتغير الأول. لحل ذلك ، يمكنك ببساطة تحديث قطاع الرمز باستخدام عنوان IP الخاص لجهازك.
الآن يمكنك الوصول إلى التطبيقات على العناوين التالية:
تشغيل الهجرات:
docker-compose exec sama-server sh -c "MONGODB_URL=mongodb://172.25.0.4/samatests npm run migrate-mongo-up"
قم بتشغيل اختبارات E2E:
docker-compose exec sama-server sh -c "MONGODB_URL=mongodb://172.25.0.4/samatests npm run test"
يمكن اختبار مكدس Sama بأكمله باستخدام https://app.samacloud.io Public Cloud.
مرجع API
أيضا ، هناك مجموعة من المقالات التفصيلية لكل واجهة برمجة تطبيقات:
مثال على كيفية إنشاء واستخدام مزود:
إنشاء app/providers/services/my_provider مع 2 ملف index.js و Provider.js
يجب أن تحتوي index.js على تنفيذ الخدمة نفسها:
export default class MyProvider {
constructor ( redisConnection , userRepo ) {
this . redisConnection = redisConnection
this . userRepo = userRepo
}
async updateAction ( ws , fields ) {
const id = await this . redisConnection . client . . .
const updatedUser = await this . userRepo . update . ...
... .
return updatedUser
}
}Provider.js تصدير مثيل لـ registerProvider الذي يحتوي على تعليمات كيفية إنشاء مثيل لفئة index.js مع تبعيات: import RegisterProvider from "@sama/common/RegisterProvider.js"
import MyProvider from "./index.js"
const name = "MyProvider"
class MyProviderRegistration extends RegisterProvider {
register ( slc ) {
const redisConnection = slc . use ( "RedisClient" )
const userRepo = slc . use ( "UserRepository" )
return new MyProvider ( redisConnection , userRepo )
}
}
export default new MyProviderRegistration ( { name , implementationName : MyProvider . name } )Provider.js إلى app/providers/index.js import UserRepoProvider from "./repositories/user/Provider.js"
...
...
import MyProviderRegistration from "./services/my_provider/Provider.js"
const providers = [
UserRepoProvider ,
...
...
MyProviderRegistration
]
export default providers لأي مقدمي واجهات برمجة التطبيقات المخصصة - الاستخدام /APIs/[API_NAME]/providers/index.js 20/providers/index.js ملف:
والآن يمكنك استخدام فئة MyProvider عند الحاجة ، على سبيل المثال في وحدة التحكم:
import ServiceLocatorContainer from "@sama/common/ServiceLocatorContainer.js"
class Controller {
async edit ( ws , data ) {
const myProvider = ServiceLocatorContainer . use ( "MyProvider" )
const updatedUser = await myProvider . updateAction ( ws , data )
. ...
}
} انضم إلى مجتمعنا للحصول على الدعم والمناقشات:
خريطة الطريق
GPL-3.0
أي أفكار ، ردود الفعل موضع ترحيب! يرجى إنشاء مشكلة github لأي تعليقات لديك.
تريد أن تدعمنا؟