StompClientLib is a stomp client in Swift. It uses Facebook's SocketRocket as a websocket dependency. SocketRocket is written in Objective-C but StompClientLib's STOMP part is written in Swift and its usage is Swift. You can use this library in your Swift 3 projects.
This is original a fork from AKStompClient (This library is not working right now)
To run the example project, clone the repo, and run pod install
from the Example directory first.
- iOS 8.0+
- Xcode 8.1, 8.2, 8.3
- Swift 3.0, 3.1, 3.2
StompClientLib is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "StompClientLib"
import StompClientLib
Once imported, you can open a connection to your WebSocket server.
var socketClient = StompClientLib()
let url = NSURL(string: "your-socket-url-is-here")!
socketClient.openSocketWithURLRequest(request: NSURLRequest(url: url as URL) , delegate: self)
After you are connected, there are some delegate methods that you need to implement.
func stompClientDidConnect(client: StompClientLib!) {
print("Socket is connected")
// Stomp subscribe will be here!
socketClient.subscribe(destination: topic)
// Note : topic needs to be a String object
}
func stompClientDidDisconnect(client: StompClientLib!) {
print("Socket is Disconnected")
}
func stompClientWillDisconnect(client: StompClientLib!, withError error: NSError) {
}
Your json message will be converted to JSON Body as AnyObject and you will receive your message in this function
func stompClient(client: StompClientLib!, didReceiveMessageWithJSONBody jsonBody: AnyObject?, withHeader header: [String : String]?, withDestination destination: String) {
print("Destination : \(destination)")
print("JSON Body : \(String(describing: jsonBody))")
}
If you will use STOMP for in-app purchase, you might need to use this function to get receipt
func serverDidSendReceipt(client: StompClientLib!, withReceiptId receiptId: String) {
print("Receipt : \(receiptId)")
}
Your error message will be received in this function
func serverDidSendError(client: StompClientLib!, withErrorMessage description: String, detailedErrorMessage message: String?) {
print("Error Send : \(String(describing: message))")
}
If you need to control your server's ping, here is your part
func serverDidSendPing() {
print("Server ping")
}
There are functions for subscribing and unsubscribing. Note : You should handle your subscribe and unsubscibe methods ! Suggestion : Subscribe to your topic in "stompClientDidConnect" function and unsubcribe to your topic in stompClientWillDisconnect method.
socketClient.subscribe(destination: topic)
// Note : topic needs to be a String object
socketClient.unsubscribe(destination: topic)
Important : You have to send your destination for both subscribe or unsubscribe!
- Complete a working Example
- Add Carthage installation option
- Add Swift Package Manager installation option
- XCode 9 compatibility
- Swift 4 compatibility and tests
- Add Quick Testing
- Re-write websocket full swift version instead of Facebook's SocketRocket lib
FreakyCoder, [email protected]
StompClientLib is available under the MIT license. See the LICENSE file for more info.