Fluux XMPP 는 iOS, MacOS 및 Linux용 Swift의 Chat SDK입니다. IETF 표준인 XMPP 프로토콜을 구현합니다.
Fluux XMPP 는 다음 목표를 염두에 두고 완전한 구현입니다.
따라서 iOS에서는 iOS 버전 12 이상을 대상으로 합니다. MacOS에서는 Mojave 이상(10.14+)에 중점을 둡니다. Linux에서는 SwiftNIO와 함께 BSD 소켓을 사용하므로 Swift 5.0+가 설치되어 있는 한 상당히 광범위하게 작동합니다.
참고 : 이 라이브러리는 매우 활발하게 개발 중이며 아직 생산 준비가 되지 않았습니다.
우리는 다음 원칙에 따라 빌드 시스템을 설계합니다.
따라서 우리는 타겟/빌드 시스템에 따라 플랫폼을 다르게 구축합니다.
이 결정을 통해 우리는 좋은 플랫폼 도달 범위를 유지하면서 모든 빌드 시스템을 매우 단순하게 유지할 수 있습니다.
libxml2 및 TLS 구현(예: libressl)이 필요합니다. HomeBrew를 사용하여 설치할 수 있습니다.
brew install libxml2
brew install libressl
제공된 Package.swift
파일 덕분에 Swift Package Manager를 사용하여 lib를 빌드할 수 있습니다.
또한 현재 Swift PM은 배포 대상에 대한 하드코딩된 값으로 MacOS 10.10을 사용하므로 빌드 대상을 명시적으로 MacOS 10.12로 적절하게 설정해야 합니다(자세한 내용은 여기 참조).
Swift PM 프로젝트에 Fluux XMPP 통합하려면 이를 Package.swift
파일에 프로젝트의 종속성으로 추가할 수 있습니다. 예를 들어:
// swift-tools-version:5.0
import PackageDescription
let package = Package (
name : " XMPP Demo " ,
dependencies : [
// Dependencies declare other packages that this package depends on.
. package ( url : " https://github.com/FluuxIO/XMPP.git " , from : " 0.0.2 " ) ,
] ,
targets : [
. target (
name : " XMPP Demo " ,
dependencies : [ " XMPP " ] ) ,
. testTarget (
name : " XMPP DemoTests " ,
dependencies : [ " XMPP Demo " ] ) ,
]
)
명령줄 실행 파일인 main.swift
수정하여 XMPP 클라이언트를 시작할 수 있습니다. 예를 들어:
import Foundation
import XMPP
guard let jid = JID ( " mremond@localhost/ XMPP Demo " ) else { print ( " Invalid JID " ) ; exit ( 1 ) }
var XMPP Config = Config ( jid : jid , password : " mypass " , useTLS : true )
XMPP Config . allowInsecure = true
XMPP Config . host = " MacBook-Pro-de-Mickael.local "
XMPP Config . streamObserver = DefaultStreamObserver ( )
let client = XMPP ( config : XMPP Config )
let semaphore = DispatchSemaphore ( value : 0 )
client . connect {
print ( " Disconnected ! " )
semaphore . signal ( )
}
_ = semaphore . wait ( timeout : DispatchTime . distantFuture )
프로젝트를 빌드하려면 표준 빌드 명령을 사용하면 됩니다.
swift build
그런 다음 콘솔 클라이언트를 실행할 수 있습니다.
.build/debug/ XMPP Demo
테스트는 다음 명령으로 실행할 수 있습니다.
swift test
Docker 공식 이미지를 사용하여 Linux에서 Swift 프로젝트를 작업할 수 있습니다. MacO에서 Docker를 사용하여 Linux 버전을 빌드할 수도 있습니다.
다음 명령을 사용하여 Swift Docker 이미지를 검색할 수 있습니다.
docker pull swift
그런 다음 컨테이너 내부에서 Linux 셸을 열어 빌드할 수 있습니다.
docker run -itv $( pwd ) :/code --name swiftcode -w /code swift /bin/bash
그런 다음 다음을 사용하여 컨테이너에 libxml2-dev
및 libssl-dev
dev 패키지를 설치해야 합니다.
apt-get update
apt-get install libxml2-dev libssl-dev
Docker 셸에서 다음을 사용하여 코드를 빌드할 수 있습니다.
swift build
Linux에서 테스트를 실행하려면 테스트 검색을 명시적으로 활성화해야 합니다(Swift Test Discovery 참조).
swift test --enable-test-discovery
현재 라이브러리는 STARTTLS가 아닌 표준 TLS 연결만 지원합니다. Apple 네트워킹 라이브러리는 연결이 설정된 후 암호화 전환을 지원하지 않습니다(아직?). STARTTLS 구현과 관련된 보안 문제가 우려되기 때문입니다.
즉, XMPP 포트 5223에서 TLS를 지원합니다. XMPP Standards Foundation에서 포트 5223 사용을 더 이상 사용하지 않기 때문에 "레거시" SSL이라고 합니다. 즉, ejabberd와 같은 최신 XMPP 서버는 포트 5223에서 최첨단 TLS를 지원합니다. 현재 TLS를 사용하려면 포트 5223에서 TLS를 사용하는 것이 좋습니다.