tweak logging
This commit is contained in:
parent
d887c96550
commit
f87ed47723
@ -53,10 +53,12 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
private var waitingForPost = false
|
private var waitingForPost = false
|
||||||
private var _websocket = false
|
private var _websocket = false
|
||||||
private var websocketConnected = false
|
private var websocketConnected = false
|
||||||
|
|
||||||
|
let logType = "SocketEngine"
|
||||||
|
|
||||||
var connected:Bool {
|
var connected:Bool {
|
||||||
return self._connected
|
return self._connected
|
||||||
}
|
}
|
||||||
|
|
||||||
weak var client:SocketEngineClient?
|
weak var client:SocketEngineClient?
|
||||||
var cookies:[NSHTTPCookie]?
|
var cookies:[NSHTTPCookie]?
|
||||||
var log = false
|
var log = false
|
||||||
@ -180,7 +182,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
|
|
||||||
private func doFastUpgrade() {
|
private func doFastUpgrade() {
|
||||||
if self.waitingForPoll {
|
if self.waitingForPoll {
|
||||||
SocketLogger.err("Engine: Outstanding poll when switched to WebSockets," +
|
SocketLogger.err("Outstanding poll when switched to WebSockets," +
|
||||||
"we'll probably disconnect soon. You should report this.", client: self)
|
"we'll probably disconnect soon. You should report this.", client: self)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,7 +212,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
|
|
||||||
req.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
|
req.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
|
||||||
|
|
||||||
SocketLogger.log("Engine: Doing polling request", client: self)
|
SocketLogger.log("Doing polling request", client: self)
|
||||||
|
|
||||||
self.session.dataTaskWithRequest(req) {[weak self] data, res, err in
|
self.session.dataTaskWithRequest(req) {[weak self] data, res, err in
|
||||||
if self == nil {
|
if self == nil {
|
||||||
@ -225,7 +227,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
SocketLogger.log("Engine: Got polling response", client: self!)
|
SocketLogger.log("Got polling response", client: self!)
|
||||||
|
|
||||||
if let str = NSString(data: data, encoding: NSUTF8StringEncoding) as? String {
|
if let str = NSString(data: data, encoding: NSUTF8StringEncoding) as? String {
|
||||||
dispatch_async(self!.parseQueue) {
|
dispatch_async(self!.parseQueue) {
|
||||||
@ -245,7 +247,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func flushProbeWait() {
|
private func flushProbeWait() {
|
||||||
SocketLogger.log("Engine: Flushing probe wait", client: self)
|
SocketLogger.log("Flushing probe wait", client: self)
|
||||||
|
|
||||||
dispatch_async(self.emitQueue) {[weak self] in
|
dispatch_async(self.emitQueue) {[weak self] in
|
||||||
if self == nil {
|
if self == nil {
|
||||||
@ -295,7 +297,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
|
|
||||||
self.waitingForPost = true
|
self.waitingForPost = true
|
||||||
|
|
||||||
SocketLogger.log("Engine: POSTing: \(postStr)", client: self)
|
SocketLogger.log("POSTing: \(postStr)", client: self)
|
||||||
|
|
||||||
self.session.dataTaskWithRequest(req) {[weak self] data, res, err in
|
self.session.dataTaskWithRequest(req) {[weak self] data, res, err in
|
||||||
if self == nil {
|
if self == nil {
|
||||||
@ -349,13 +351,13 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
|
|
||||||
public func open(opts:[String: AnyObject]? = nil) {
|
public func open(opts:[String: AnyObject]? = nil) {
|
||||||
if self.connected {
|
if self.connected {
|
||||||
SocketLogger.err("Engine: Tried to open while connected", client: self)
|
SocketLogger.err("Tried to open while connected", client: self)
|
||||||
|
|
||||||
self.client?.didError("Engine tried to open while connected")
|
self.client?.didError("Tried to open while connected")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
SocketLogger.log("Engine: Starting engine", client: self)
|
SocketLogger.log("Starting engine", client: self)
|
||||||
|
|
||||||
self.closed = false
|
self.closed = false
|
||||||
let (urlPolling, urlWebSocket) = self.createURLs(opts)
|
let (urlPolling, urlWebSocket) = self.createURLs(opts)
|
||||||
@ -409,7 +411,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
length += chr
|
length += chr
|
||||||
} else {
|
} else {
|
||||||
if length == "" || testLength(length, &n) {
|
if length == "" || testLength(length, &n) {
|
||||||
SocketLogger.err("Engine: parsing error: \(str)", client: self)
|
SocketLogger.err("Parsing error: \(str)", client: self)
|
||||||
|
|
||||||
self.handlePollingFailed("Error parsing XHR message")
|
self.handlePollingFailed("Error parsing XHR message")
|
||||||
return
|
return
|
||||||
@ -448,7 +450,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func parseEngineMessage(var message:String, fromPolling:Bool) {
|
private func parseEngineMessage(var message:String, fromPolling:Bool) {
|
||||||
SocketLogger.log("Engine: Got message: \(message)", client: self)
|
SocketLogger.log("Got message: \(message)", client: self)
|
||||||
|
|
||||||
if fromPolling {
|
if fromPolling {
|
||||||
fixDoubleUTF8(&message)
|
fixDoubleUTF8(&message)
|
||||||
@ -561,7 +563,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
/// Only call on emitQueue
|
/// Only call on emitQueue
|
||||||
private func sendPollMessage(var msg:String, withType type:PacketType,
|
private func sendPollMessage(var msg:String, withType type:PacketType,
|
||||||
datas:ContiguousArray<NSData>? = nil) {
|
datas:ContiguousArray<NSData>? = nil) {
|
||||||
SocketLogger.log("Engine: Sending poll: \(msg) as type: \(type.rawValue)", client: self)
|
SocketLogger.log("Sending poll: \(msg) as type: \(type.rawValue)", client: self)
|
||||||
|
|
||||||
doubleEncodeUTF8(&msg)
|
doubleEncodeUTF8(&msg)
|
||||||
let strMsg = "\(type.rawValue)\(msg)"
|
let strMsg = "\(type.rawValue)\(msg)"
|
||||||
@ -585,7 +587,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
/// Only call on emitQueue
|
/// Only call on emitQueue
|
||||||
private func sendWebSocketMessage(str:String, withType type:PacketType,
|
private func sendWebSocketMessage(str:String, withType type:PacketType,
|
||||||
datas:ContiguousArray<NSData>? = nil) {
|
datas:ContiguousArray<NSData>? = nil) {
|
||||||
SocketLogger.log("Engine: Sending ws: \(str) as type: \(type.rawValue)", client: self)
|
SocketLogger.log("Sending ws: \(str) as type: \(type.rawValue)", client: self)
|
||||||
|
|
||||||
self.ws?.writeString("\(type.rawValue)\(str)")
|
self.ws?.writeString("\(type.rawValue)\(str)")
|
||||||
|
|
||||||
@ -615,7 +617,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
|
|
||||||
private func upgradeTransport() {
|
private func upgradeTransport() {
|
||||||
if self.websocketConnected {
|
if self.websocketConnected {
|
||||||
SocketLogger.log("Engine: Upgrading transport to WebSockets", client: self)
|
SocketLogger.log("Upgrading transport to WebSockets", client: self)
|
||||||
|
|
||||||
// Do a fast upgrade
|
// Do a fast upgrade
|
||||||
// At this point, we should not send anymore polling messages-
|
// At this point, we should not send anymore polling messages-
|
||||||
@ -631,10 +633,10 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self!.websocket {
|
if self!.websocket {
|
||||||
SocketLogger.log("Engine: Writing ws: \(msg):\(data)", client: self!)
|
SocketLogger.log("Writing ws: \(msg):\(data)", client: self!)
|
||||||
self?.sendWebSocketMessage(msg, withType: type, datas: data)
|
self?.sendWebSocketMessage(msg, withType: type, datas: data)
|
||||||
} else {
|
} else {
|
||||||
SocketLogger.log("Engine: Writing poll: \(msg):\(data)", client: self!)
|
SocketLogger.log("Writing poll: \(msg):\(data)", client: self!)
|
||||||
self?.sendPollMessage(msg, withType: type, datas: data)
|
self?.sendPollMessage(msg, withType: type, datas: data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,6 +41,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
private var reconnectTimer:NSTimer?
|
private var reconnectTimer:NSTimer?
|
||||||
|
|
||||||
let reconnectAttempts:Int!
|
let reconnectAttempts:Int!
|
||||||
|
let logType = "SocketClient"
|
||||||
var ackHandlers = SocketAckMap()
|
var ackHandlers = SocketAckMap()
|
||||||
var currentAck = -1
|
var currentAck = -1
|
||||||
var log = false
|
var log = false
|
||||||
@ -138,7 +139,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func addEngine() {
|
private func addEngine() {
|
||||||
SocketLogger.log("Client: Adding engine", client: self)
|
SocketLogger.log("Adding engine", client: self)
|
||||||
|
|
||||||
self.engine = SocketEngine(client: self,
|
self.engine = SocketEngine(client: self,
|
||||||
forcePolling: self.forcePolling,
|
forcePolling: self.forcePolling,
|
||||||
@ -153,7 +154,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
Pass true to fast if you're closing from a background task
|
Pass true to fast if you're closing from a background task
|
||||||
*/
|
*/
|
||||||
public func close(#fast:Bool) {
|
public func close(#fast:Bool) {
|
||||||
SocketLogger.log("Client: Closing socket", client: self)
|
SocketLogger.log("Closing socket", client: self)
|
||||||
|
|
||||||
self.reconnects = false
|
self.reconnects = false
|
||||||
self._connecting = false
|
self._connecting = false
|
||||||
@ -222,7 +223,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
func didConnect() {
|
func didConnect() {
|
||||||
SocketLogger.log("Client: Socket connected", client: self)
|
SocketLogger.log("Socket connected", client: self)
|
||||||
|
|
||||||
self._closed = false
|
self._closed = false
|
||||||
self._connected = true
|
self._connected = true
|
||||||
@ -240,7 +241,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
|
|
||||||
/// error
|
/// error
|
||||||
public func didError(reason:AnyObject) {
|
public func didError(reason:AnyObject) {
|
||||||
SocketLogger.err("Client: Error", client: self)
|
SocketLogger.err("Error", client: self)
|
||||||
|
|
||||||
self.handleEvent("error", data: reason as? [AnyObject] ?? [reason],
|
self.handleEvent("error", data: reason as? [AnyObject] ?? [reason],
|
||||||
isInternalMessage: true)
|
isInternalMessage: true)
|
||||||
@ -313,7 +314,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
SocketParser.parseForEmit(packet)
|
SocketParser.parseForEmit(packet)
|
||||||
str = packet.createMessageForEvent(event)
|
str = packet.createMessageForEvent(event)
|
||||||
|
|
||||||
SocketLogger.log("Client: Emitting: \(str)", client: self)
|
SocketLogger.log("Emitting: \(str)", client: self)
|
||||||
|
|
||||||
if packet.type == SocketPacket.PacketType.BINARY_EVENT {
|
if packet.type == SocketPacket.PacketType.BINARY_EVENT {
|
||||||
self.engine?.send(str, withData: packet.binary)
|
self.engine?.send(str, withData: packet.binary)
|
||||||
@ -335,7 +336,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
SocketParser.parseForEmit(packet)
|
SocketParser.parseForEmit(packet)
|
||||||
str = packet.createAck()
|
str = packet.createAck()
|
||||||
|
|
||||||
SocketLogger.log("Client: Emitting Ack: \(str)", client: self!)
|
SocketLogger.log("Emitting Ack: \(str)", client: self!)
|
||||||
|
|
||||||
if packet.type == SocketPacket.PacketType.BINARY_ACK {
|
if packet.type == SocketPacket.PacketType.BINARY_ACK {
|
||||||
self?.engine?.send(str, withData: packet.binary)
|
self?.engine?.send(str, withData: packet.binary)
|
||||||
@ -351,7 +352,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
SocketLogger.log("Client: Engine closed", client: self)
|
SocketLogger.log("Engine closed", client: self)
|
||||||
|
|
||||||
self._closed = true
|
self._closed = true
|
||||||
self._connected = false
|
self._connected = false
|
||||||
@ -363,7 +364,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
|
|
||||||
// Called when the socket gets an ack for something it sent
|
// Called when the socket gets an ack for something it sent
|
||||||
func handleAck(ack:Int, data:AnyObject?) {
|
func handleAck(ack:Int, data:AnyObject?) {
|
||||||
SocketLogger.log("Client: Handling ack: \(ack) with data: \(data)", client: self)
|
SocketLogger.log("Handling ack: \(ack) with data: \(data)", client: self)
|
||||||
|
|
||||||
self.ackHandlers.executeAck(ack,
|
self.ackHandlers.executeAck(ack,
|
||||||
items: (data as? [AnyObject]?) ?? (data != nil ? [data!] : nil))
|
items: (data as? [AnyObject]?) ?? (data != nil ? [data!] : nil))
|
||||||
@ -379,7 +380,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
SocketLogger.log("Client: Handling event: \(event) with data: \(data)", client: self)
|
SocketLogger.log("Handling event: \(event) with data: \(data)", client: self)
|
||||||
|
|
||||||
if self.anyHandler != nil {
|
if self.anyHandler != nil {
|
||||||
dispatch_async(dispatch_get_main_queue()) {[weak self] in
|
dispatch_async(dispatch_get_main_queue()) {[weak self] in
|
||||||
@ -399,7 +400,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
func joinNamespace() {
|
func joinNamespace() {
|
||||||
SocketLogger.log("Client: Joining namespace", client: self)
|
SocketLogger.log("Joining namespace", client: self)
|
||||||
|
|
||||||
if self.nsp != "/" {
|
if self.nsp != "/" {
|
||||||
self.engine?.send("0/\(self.nsp)", withData: nil)
|
self.engine?.send("0/\(self.nsp)", withData: nil)
|
||||||
@ -410,7 +411,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
Removes handler(s)
|
Removes handler(s)
|
||||||
*/
|
*/
|
||||||
public func off(event:String) {
|
public func off(event:String) {
|
||||||
SocketLogger.log("Client: Removing handler for event: \(event)", client: self)
|
SocketLogger.log("Removing handler for event: \(event)", client: self)
|
||||||
|
|
||||||
self.handlers = self.handlers.filter {$0.event == event ? false : true}
|
self.handlers = self.handlers.filter {$0.event == event ? false : true}
|
||||||
}
|
}
|
||||||
@ -419,7 +420,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
Adds a handler for an event.
|
Adds a handler for an event.
|
||||||
*/
|
*/
|
||||||
public func on(name:String, callback:NormalCallback) {
|
public func on(name:String, callback:NormalCallback) {
|
||||||
SocketLogger.log("Client: Adding handler for event: \(name)", client: self)
|
SocketLogger.log("Adding handler for event: \(name)", client: self)
|
||||||
|
|
||||||
let handler = SocketEventHandler(event: name, callback: callback)
|
let handler = SocketEventHandler(event: name, callback: callback)
|
||||||
self.handlers.append(handler)
|
self.handlers.append(handler)
|
||||||
@ -468,7 +469,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.reconnectTimer == nil {
|
if self.reconnectTimer == nil {
|
||||||
SocketLogger.log("Client: Starting reconnect", client: self)
|
SocketLogger.log("Starting reconnect", client: self)
|
||||||
|
|
||||||
self._reconnecting = true
|
self._reconnecting = true
|
||||||
|
|
||||||
@ -483,7 +484,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SocketLogger.log("Client: Trying to reconnect", client: self)
|
SocketLogger.log("Trying to reconnect", client: self)
|
||||||
self.handleEvent("reconnectAttempt", data: [self.reconnectAttempts - self.currentReconnectAttempt],
|
self.handleEvent("reconnectAttempt", data: [self.reconnectAttempts - self.currentReconnectAttempt],
|
||||||
isInternalMessage: true)
|
isInternalMessage: true)
|
||||||
|
|
||||||
|
|||||||
@ -26,18 +26,19 @@ import Foundation
|
|||||||
|
|
||||||
protocol SocketLogClient {
|
protocol SocketLogClient {
|
||||||
var log:Bool {get set}
|
var log:Bool {get set}
|
||||||
|
var logType:String {get}
|
||||||
}
|
}
|
||||||
|
|
||||||
final class SocketLogger {
|
final class SocketLogger {
|
||||||
static func log(message:String, client:SocketLogClient) {
|
static func log(message:String, client:SocketLogClient, altType:String? = nil) {
|
||||||
if client.log {
|
if client.log {
|
||||||
NSLog("%@", message)
|
NSLog("%@: %@", altType ?? client.logType, message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static func err(message:String, client:SocketLogClient) {
|
static func err(message:String, client:SocketLogClient, altType:String? = nil) {
|
||||||
if client.log {
|
if client.log {
|
||||||
NSLog("ERROR %@", message)
|
NSLog("ERROR %@: %@", altType ?? client.logType, message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -185,7 +185,7 @@ class SocketParser {
|
|||||||
return nsp == "" && socket.nsp != "/"
|
return nsp == "" && socket.nsp != "/"
|
||||||
}
|
}
|
||||||
|
|
||||||
SocketLogger.log("Parser: Parsing \(stringMessage)", client: socket)
|
SocketLogger.log("Parsing \(stringMessage)", client: socket, altType: "SocketParser")
|
||||||
|
|
||||||
let p:SocketPacket
|
let p:SocketPacket
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ class SocketParser {
|
|||||||
|
|
||||||
// Don't call SocketPacket.description unless we need to
|
// Don't call SocketPacket.description unless we need to
|
||||||
if socket.log {
|
if socket.log {
|
||||||
SocketLogger.log("Parser: Decoded packet as: \(p)", client: socket)
|
SocketLogger.log("Decoded packet as: \(p)", client: socket, altType: "SocketParser")
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.type == SocketPacket.PacketType.EVENT {
|
if p.type == SocketPacket.PacketType.EVENT {
|
||||||
@ -247,7 +247,7 @@ class SocketParser {
|
|||||||
// NSLog(data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros))
|
// NSLog(data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros))
|
||||||
|
|
||||||
if socket.waitingData.count == 0 {
|
if socket.waitingData.count == 0 {
|
||||||
SocketLogger.err("Parser: Got data when not remaking packet", client: socket)
|
SocketLogger.err("Got data when not remaking packet", client: socket, altType: "SocketParser")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user