Latest 0.1.5
License MIT
Platforms ios 8.0
Dependencies SocketRocket

CI Status



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) {


didReceiveMessageWithJSONBody ( Message Received via STOMP )

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")

How to subscribe and unsubscribe

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!

Future Enhancements

  • [ ] 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.

Latest podspec

    "name": "StompClientLib",
    "version": "0.1.5",
    "summary": "Simple STOMP Client library, Swift 3 compatible",
    "description": "Simple STOMP Client library, Swift 3 compatible. STOMP Protocol let the program subscribe or unsubscribe the topic. It connects the websocket and use the STOMP protocol to subscribe the topic and recieve the message, receipt or even a ping.",
    "homepage": "",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    "authors": {
        "FreakyCoder": "[email protected]"
    "source": {
        "git": "",
        "tag": "0.1.5"
    "social_media_url": "",
    "platforms": {
        "ios": "8.0"
    "source_files": "StompClientLib/Classes/**/*",
    "dependencies": {
        "SocketRocket": []
    "pushed_with_swift_version": "3.0"

Pin It on Pinterest

Share This