Fluux XMPP 、iOS、MacOS、Linux 用の Swift のチャット 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 を使用してライブラリをビルドできます。
また、現時点では、Swift PM はデプロイメント ターゲットのハードコードされた値として MacOS 10.10 を使用するため、ビルド ターゲットを明示的に MacOS 10.12 に適切に設定する必要があります (詳細はこちら)。
Fluux XMPP Swift PM プロジェクトに統合するには、それをプロジェクトの依存関係として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
現時点では、ライブラリは標準の TLS 接続のみをサポートしており、STARTTLS はサポートしていません。 Apple ネットワーキング ライブラリは、STARTTLS 実装に関するセキュリティ問題の可能性を懸念しているため、接続確立後の暗号化の切り替えを (まだ ?) サポートしていません。
ただし、 XMPPポート 5223 で TLS をサポートします。ポート 5223 の使用は少し前にXMPP Standards Foundation によって非推奨になったため、これは「レガシー」SSL と呼ばれます。そうは言っても、ejabberd のような最新のXMPPサーバーは、ポート 5223 で最先端の TLS をサポートしています。現時点では、TLS を使用する場合、ポート 5223 で TLS を使用するのはまったく問題ありません。