From 543a3c8f91067f1f777b4621422dd7774afaaf91 Mon Sep 17 00:00:00 2001 From: Erik Date: Wed, 4 Mar 2015 23:15:11 -0500 Subject: [PATCH] add toggle for polling only --- SwiftIO/SocketEngine.swift | 14 +++++++++----- SwiftIO/SocketIOClient.swift | 7 ++++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/SwiftIO/SocketEngine.swift b/SwiftIO/SocketEngine.swift index 5c84e85..b6cf850 100644 --- a/SwiftIO/SocketEngine.swift +++ b/SwiftIO/SocketEngine.swift @@ -51,6 +51,7 @@ class SocketEngine: NSObject, SRWebSocketDelegate { private let workQueue = NSOperationQueue() private let handleQueue = dispatch_queue_create( "handleQueue".cStringUsingEncoding(NSUTF8StringEncoding), DISPATCH_QUEUE_SERIAL) + private var forcePolling = false private var pingTimer:NSTimer? private var _polling = true private var probing = false @@ -70,8 +71,9 @@ class SocketEngine: NSObject, SRWebSocketDelegate { } var ws:SRWebSocket? - init(client:SocketIOClient) { + init(client:SocketIOClient, forcePolling:Bool = false) { self.client = client + self.forcePolling = forcePolling } func close() { @@ -220,10 +222,12 @@ class SocketEngine: NSObject, SRWebSocketDelegate { // println(json) self?.sid = sid - self?.ws = SRWebSocket(URL: - NSURL(string: urlWebSocket + "&sid=\(self!.sid)")!) - self?.ws?.delegate = self - self?.ws?.open() + if !self!.forcePolling { + self?.ws = SRWebSocket(URL: + NSURL(string: urlWebSocket + "&sid=\(self!.sid)")!) + self?.ws?.delegate = self + self?.ws?.open() + } } else { NSLog("Error handshaking") return diff --git a/SwiftIO/SocketIOClient.swift b/SwiftIO/SocketIOClient.swift index 6b65e41..72170f3 100644 --- a/SwiftIO/SocketIOClient.swift +++ b/SwiftIO/SocketIOClient.swift @@ -36,6 +36,7 @@ class SocketIOClient { private lazy var params:[String: AnyObject] = [String: AnyObject]() private var ackHandlers = [SocketAckHandler]() private var currentAck = -1 + private var forcePolling = false private var handlers = [SocketEventHandler]() private var lastSocketMessage:SocketEvent? private var paramConnect = false @@ -82,9 +83,13 @@ class SocketIOClient { if let nsp = opts!["nsp"] as? String { self.nsp = nsp } + + if let polling = opts!["forcePolling"] as? Bool { + self.forcePolling = polling + } } - self.engine = SocketEngine(client: self) + self.engine = SocketEngine(client: self, forcePolling: self.forcePolling) } // Closes the socket