         self.socket.readData(to: self.separator, withTimeout: -1, tag: 0)
     }
 
-    public func socket(_ sock: GCDAsyncSocket, didReadPartialDataOfLength partialLength: UInt, tag: Int) {
+    @objc public func socket(_ sock: GCDAsyncSocket, didReadPartialDataOfLength partialLength: UInt, tag: Int) {
         debugPrint("SOCKET: Got something")
     }
 
-    public func socket(_ sock: GCDAsyncSocket, didConnectToHost host: String, port: UInt16) {
+    @objc public func socket(_ sock: GCDAsyncSocket, didConnectToHost host: String, port: UInt16) {
         debugPrint("SOCKET: Cool, I'm connected! That was easy.");
 
         self.delegate?.socketDidConnect(client: self)
     }
 
-    public func socket(_ sock: GCDAsyncSocket, didConnectTo url: URL) {
+    @objc public func socket(_ sock: GCDAsyncSocket, didConnectTo url: URL) {
         debugPrint("SOCKET: Cool, I'm connected! That was easy.");
     }
 
-    public func socketDidDisconnect(_ sock: GCDAsyncSocket, withError err: Error?) {
+    @objc public func socketDidDisconnect(_ sock: GCDAsyncSocket, withError err: Error?) {
         debugPrint("SOCKET: Disconnected me: \(String(describing: err?.localizedDescription))");
 
         self.parseManager.reset()


    // MARK: CocaAsyncSocket Callbacks

    public func socket(_ sock: GCDAsyncSocket, didRead data: Data, withTag tag: Int) {
        guard let line: String = String(data: data, encoding: .utf8) else {
            return
        }

        self.completionBlocks.removeAll()
    }

    @objc public func close() {
        self.doDisconnect()
    }

    @objc public func isConnected() -> Bool {
        return self.socket.isConnected
    }

    @objc public func connect(host: String, port: Int, pwd: String?) {
        // We might be using a new auth or channel, so let's disconnect if we are connected
        if self.socket.isConnected {
            self.doDisconnect()
