LiveGQL is a simple library to use GraphQL Subscribtion on WebSocket based on Apollo Protocol.
The Android version is here
- Connect to a GraphQL WebSocket server
- Send messages
- Subscribe / unsubscribe
- Close connection
- Data handling (delegate)
- Error handling
- Reconnect option
- JSON raw response
- Queue of unsent messages
- Implement all Apollo protocol (today just Client part totally implemented)
- Next: Swift 4 update with native JSON Encoder/Decoder
- iOS 9.0 / tvOS 9.0
- Xcode >= 8.1
- Swift >= 3.0
We also use Starscream and JSONCodable, thanks to them
- Use issue if you have any problem
- Don't hesitate to contribute to the project with a pull request
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'LiveGQL', '~> 1.1.1'
end
github "florianmari/LiveGQL"
See Carthage guide for more informations about integrating with Carthage.
Just copy files in the Source folder!
Important: to not fall out the variable in the scope, please instantiate above your viewDidLoad() for example.
import LiveGQL
let gql = LiveGQL(socket: "ws://localhost:7003/feedback")
gql.delegate = self
gql.initServer(connectionParams: nil, reconnect: true)
You can set a Dictionnary[String:String] as connectionParams like for authentification by example.
Just call subscribe method, set an identifier and your subscription query as well.
gql.subscribe(graphql: "subscription {feedbackAdded {id, text}}", identifier: "feed")
You have to implement delegate method, in your main ViewController (for example) just att that
override func viewDidLoad() {
super.viewDidLoad()
gql.delegate = self
// Do any additional setup after loading the view, typically from a nib.
}
Below your class add the folowing extension and implement the method:
extension ViewController: LiveGQLDelegate {
func receivedMessage(text: String) {
print("Received Message: \(text)")
}
}
Just call unsubscribe method and your identifier
gql.unsubscribe(identifier: "feed")
gql.closeConnection()