uWebSockets.js 
Tujuan dari Protokol Pesan dan Server Obrolan kami, yang berbeda dari yang lain, adalah untuk memberikan solusi alternatif untuk protokol pesan XMPP yang menyebar luas (dan sejujurnya - satu -satunya 'standar' yang tersebar luas saat ini).
Baca posting medium lengkap memperkenalkan Sama dan apa itu Sama tentang apa itu Sama dan masalah apa yang kami coba selesaikan dengan itu:
Frontend App (Web + Mobile) tersedia di https://github.com/sama-communications/sama-client
Node 18 terbaru yang diinstal..env.example to .env .docker-compose -f docker-compose.yml -f docker-compose.development.yml up untuk menjalankan layanan dependen (MongoDB, Minio, Redis)npm install untuk menginstal dependensinpm run migrate-mongo-up untuk menjalankan migrasi DBnpm run start Jalankan Server (dalam kasus berjalan di bawah Windows - lihat #128)ws://localhost:9001Ada juga komponen lain yang tersedia di Sama Stack - Lihatlah Menyebarkan Sama Chat Server Stack: Panduan Komprehensif
Menyebarkan aplikasi SAMA dapat dilakukan dengan mudah dengan Docker, apakah Anda ingin pengaturan lengkap dengan semua dependensi atau lingkungan lokal dengan aplikasi utama. Di bawah ini adalah langkah -langkah yang harus diikuti:
Pendekatan ini membangun dan menjalankan seluruh aplikasi Sama, termasuk semua dependensi, dalam satu perintah. Ini sangat ideal untuk menyiapkan lingkungan penuh dengan cepat.
Untuk digunakan menggunakan metode ini, jalankan:
docker-compose -f docker-compose-full.yml up --build
Untuk menjalankan layanan ketergantungan bersama dengan aplikasi SAMA utama ( sama-client , sama-server , dan sama-push-daemon ), gunakan:
docker-compose up --build
SAMA , tambahkan dua variabel ini sebelum perintah peluncuran:
MacOS
MINIO_ENDPOINT=$(ipconfig getifaddr en0) MINIO_PORT=9010
Windows
$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;
Jika Anda menghadapi masalah dengan lampiran di klien web, itu menunjukkan bahwa kesalahan terjadi pada variabel pertama. Untuk menyelesaikan ini, Anda dapat memperbarui segmen kode dengan alamat IP pribadi mesin Anda.
Sekarang Anda dapat mengakses aplikasi di alamat berikut:
Jalankan migrasi:
docker-compose exec sama-server sh -c "MONGODB_URL=mongodb://172.25.0.4/samatests npm run migrate-mongo-up"
Jalankan tes E2E:
docker-compose exec sama-server sh -c "MONGODB_URL=mongodb://172.25.0.4/samatests npm run test"
Seluruh tumpukan SAMA dapat diuji menggunakan https://app.samacloud.io public cloud.
Referensi API
Juga, ada satu set artikel terperinci untuk setiap API:
Contoh cara membuat dan menggunakan penyedia:
Buat app/providers/services/my_provider dengan 2 file index.js dan Provider.js
index.js harus berisi implementasi layanan itu sendiri:
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 harus mengekspor instance dari registerprovider yang berisi instruksi cara membuat instance kelas index.js dengan dependensi: 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 ke 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 Untuk penyedia API kustom mana pun - gunakan /APIs/[API_NAME]/providers/index.js file:
Dan sekarang Anda dapat menggunakan kelas MyProvider jika diperlukan, misalnya dalam pengontrol:
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 )
. ...
}
} Bergabunglah dengan komunitas kami untuk dukungan dan diskusi:
Peta jalan
GPL-3.0
Pikiran apa pun, umpan balik diterima! Harap buat masalah github untuk umpan balik apa pun yang Anda miliki.
Ingin mendukung kami?