uWebSockets.js 
ความตั้งใจของโปรโตคอลการส่งข้อความและเซิร์ฟเวอร์แชทของเราซึ่งแตกต่างจากผู้อื่นคือการจัดหาทางเลือกอื่นให้กับโปรโตคอลการส่งข้อความ XMPP ที่แพร่กระจายกว้าง (และพูดตามตรง
อ่านโพสต์กลางที่สมบูรณ์ แนะนำ SAMA และ SAMA เกี่ยวกับอะไรคือ SAMA และปัญหาใดที่เราพยายามแก้ไขด้วย:
แอพส่วนหน้า (เว็บ + มือถือ) มีให้ที่ https://github.com/sama-communications/sama-client
Node 18 ล่าสุด.env.example ถึง .envdocker-compose -f docker-compose.yml -f docker-compose.development.yml up เรียกใช้บริการที่ขึ้นกับ (MongoDB, Minio, Redis)npm install เพื่อติดตั้งการพึ่งพาnpm run migrate-mongo-up เพื่อเรียกใช้การย้ายฐานข้อมูล DBnpm run start เรียกใช้เซิร์ฟเวอร์ (ในกรณีที่ทำงานภายใต้ Windows - ดู #128)ws://localhost:9001นอกจากนี้ยังมีส่วนประกอบอื่น ๆ ใน SAMA Stack - ตรวจสอบการปรับใช้ SAMA แชทเซิร์ฟเวอร์สแต็ก: คู่มือที่ครอบคลุม
การปรับใช้แอปพลิเคชัน 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 ให้เพิ่มตัวแปรสองตัวนี้ก่อนคำสั่ง LAINED:
แม็กอส
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 Cloud สาธารณะ
การอ้างอิง API
นอกจากนี้ยังมีชุดของบทความโดยละเอียดสำหรับแต่ละ 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 ที่กำหนดเองใด ๆ - ใช้ /APIs/[API_NAME]/providers/index.js เหมือนกัน/providers/index.js ไฟล์:
และตอนนี้ yiou สามารถใช้คลาส 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 สำหรับข้อเสนอแนะใด ๆ ที่คุณมี
ต้องการสนับสนุนเราหรือไม่?