uWebSockets.js 로 구동됩니다 
다른 사람과는 다른 메시징 프로토콜 및 채팅 서버의 의도는 광범위한 XMPP 메시징 프로토콜에 대한 대체 솔루션을 제공하는 것입니다 (그리고 솔직히 말해서, 요즘 유일한 스프레드 '표준').
SAMA를 소개하는 완전한 중간 게시물과 SAMA가 무엇인지, 무엇을 해결하려고하는지에 대해 SAMA를 읽으십시오.
Frontend App (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-upnpm run start (Windows에서 실행되는 경우 - #128 참조)ws://localhost:9001 에서 들어오는 연결을 듣게됩니다.SAMA 스택에는 사용 가능한 다른 구성 요소도 있습니다. 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 앱을 실행하려는 경우 시작 명령 전에이 두 변수를 추가하십시오.
마코스
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 퍼블릭 클라우드를 사용하여 테스트 할 수 있습니다.
API 참조
또한 각 API에 대한 세부 기사 세트가 있습니다.
공급자를 생성하고 사용하는 방법 :
2 파일 index.js 및 Provider.js 사용하여 폴더 app/providers/services/my_provider 만듭니다
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 의존성이있는 index.js 클래스 인스턴스를 만드는 방법을 포함하는 RegisterProvider 인스턴스를 내보내야합니다. 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 모든 사용자 정의 API 제공 업체의 경우 - /APIs/[API_NAME]/providers/index.js api_name]을 사용하십시오 .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 문제를 작성하십시오.
우리를 지원하고 싶습니까?