Fluux XMPP adalah SDK Obrolan di Swift untuk iOS, MacOS, dan Linux. Ini mengimplementasikan protokol XMPP , yang merupakan standar IETF.
Fluux XMPP adalah implementasi yang bersih, dengan tujuan sebagai berikut:
Oleh karena itu, di iOS, kami menargetkan iOS versi 12+. Di MacOS, kami fokus pada Mojave dan yang lebih baru (10.14+). Di Linux, kami menggunakan BSD Socket dengan SwiftNIO, jadi ini akan berfungsi cukup luas, selama Anda menginstal Swift 5.0+.
Catatan : Perpustakaan ini sedang dalam pengembangan yang sangat aktif dan belum siap untuk produksi.
Kami merancang sistem pembangunan dengan prinsip-prinsip berikut:
Oleh karena itu, kami membangun platform secara berbeda berdasarkan target/sistem pembangunan:
Keputusan ini memungkinkan kami menjaga semua sistem pembangunan tetap sederhana, sekaligus memiliki jangkauan platform yang baik.
Anda memerlukan implementasi libxml2 dan TLS (yaitu libressl). Anda dapat menginstalnya dengan HomeBrew:
brew install libxml2
brew install libressl
Anda dapat membangun lib menggunakan Swift Package Manager, berkat file Package.swift
yang disediakan.
Anda juga perlu menetapkan target build Anda ke MacOS 10.12 dengan benar secara eksplisit, karena, saat ini, Swift PM menggunakan MacOS 10.10 sebagai nilai hardcode untuk target penerapan (lebih lanjut tentang ini di sini).
Untuk mengintegrasikan Fluux XMPP dalam proyek Swift PM Anda, Anda dapat menambahkannya sebagai dependensi proyek Anda di file Package.swift
Anda. Misalnya:
// 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 " ] ) ,
]
)
Anda dapat memodifikasi main.swift
baris perintah yang dapat dieksekusi untuk memulai klien XMPP . Misalnya:
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 )
Untuk membangun proyek, Anda cukup menggunakan perintah build standar:
swift build
Anda kemudian dapat menjalankan klien konsol Anda:
.build/debug/ XMPP Demo
Tes dapat dijalankan dengan perintah:
swift test
Anda dapat menggunakan image resmi Docker untuk bekerja pada proyek Swift di Linux. Anda juga dapat menggunakan Docker di MacOs untuk membangun versi Linux.
Anda dapat mengambil gambar Swift Docker dengan perintah berikut:
docker pull swift
Anda kemudian dapat membuka shell Linux di dalam wadah:
docker run -itv $( pwd ) :/code --name swiftcode -w /code swift /bin/bash
Anda kemudian perlu menginstal paket libxml2-dev
dan libssl-dev
dev di dalam container dengan:
apt-get update
apt-get install libxml2-dev libssl-dev
Dari shell Docker, Anda dapat membuat kode dengan:
swift build
Untuk menjalankan pengujian di Linux, Anda perlu mengaktifkan penemuan pengujian secara eksplisit (Lihat Swift Test Discovery):
swift test --enable-test-discovery
Saat ini perpustakaan hanya mendukung koneksi TLS standar, bukan STARTTLS. Pustaka Jaringan Apple tidak mendukung (belum?) peralihan enkripsi setelah koneksi dibuat, karena mereka khawatir dengan kemungkinan masalah keamanan di sekitar implementasi STARTTLS.
Meskipun demikian, XMPP mendukung TLS pada port 5223. Ini disebut SSL "lama" karena penggunaan port 5223 sudah tidak digunakan lagi oleh XMPP Standards Foundation beberapa waktu lalu. Meskipun demikian, server XMPP modern seperti ejabberd mendukung TLS canggih pada port 5223. Untuk menggunakan TLS saat ini, tidak masalah menggunakan TLS pada port 5223.