work on logging
This commit is contained in:
parent
7f7ae0b9f5
commit
69339cbb65
@ -30,7 +30,7 @@ extension String {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class SocketEngine: NSObject, WebSocketDelegate {
|
public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
|
||||||
private typealias Probe = (msg:String, type:PacketType, data:ContiguousArray<NSData>?)
|
private typealias Probe = (msg:String, type:PacketType, data:ContiguousArray<NSData>?)
|
||||||
private typealias ProbeWaitQueue = [Probe]
|
private typealias ProbeWaitQueue = [Probe]
|
||||||
|
|
||||||
@ -62,6 +62,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
|
|
||||||
weak var client:SocketEngineClient?
|
weak var client:SocketEngineClient?
|
||||||
var cookies:[NSHTTPCookie]?
|
var cookies:[NSHTTPCookie]?
|
||||||
|
var log = false
|
||||||
var pingInterval:Int?
|
var pingInterval:Int?
|
||||||
var polling:Bool {
|
var polling:Bool {
|
||||||
return self._polling
|
return self._polling
|
||||||
@ -93,11 +94,12 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public init(client:SocketEngineClient, forcePolling:Bool,
|
public init(client:SocketEngineClient, forcePolling:Bool,
|
||||||
forceWebsockets:Bool, withCookies cookies:[NSHTTPCookie]?) {
|
forceWebsockets:Bool, withCookies cookies:[NSHTTPCookie]?, logging:Bool) {
|
||||||
self.client = client
|
self.client = client
|
||||||
self.forcePolling = forcePolling
|
self.forcePolling = forcePolling
|
||||||
self.forceWebsockets = forceWebsockets
|
self.forceWebsockets = forceWebsockets
|
||||||
self.cookies = cookies
|
self.cookies = cookies
|
||||||
|
self.log = logging
|
||||||
self.session = NSURLSession(configuration: NSURLSessionConfiguration.ephemeralSessionConfiguration(),
|
self.session = NSURLSession(configuration: NSURLSessionConfiguration.ephemeralSessionConfiguration(),
|
||||||
delegate: nil, delegateQueue: self.workQueue)
|
delegate: nil, delegateQueue: self.workQueue)
|
||||||
}
|
}
|
||||||
@ -181,8 +183,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
|
|
||||||
private func doFastUpgrade() {
|
private func doFastUpgrade() {
|
||||||
if self.waitingForPoll {
|
if self.waitingForPoll {
|
||||||
NSLog("Outstanding poll when switched to websockets," +
|
SocketLogger.err("Engine: Outstanding poll when switched to WebSockets," +
|
||||||
"we'll probably disconnect soon. You should report this.")
|
"we'll probably disconnect soon. You should report this.", client: self)
|
||||||
}
|
}
|
||||||
|
|
||||||
self.sendWebSocketMessage("", withType: PacketType.UPGRADE, datas: nil)
|
self.sendWebSocketMessage("", withType: PacketType.UPGRADE, datas: nil)
|
||||||
@ -211,7 +213,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
|
|
||||||
req.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
|
req.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
|
||||||
|
|
||||||
// NSLog("Doing request: \(req)")
|
SocketLogger.log("Engine: Doing polling request: \(req)", 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 {
|
||||||
return
|
return
|
||||||
@ -225,7 +228,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// NSLog("Got response: \(res)")
|
SocketLogger.log("Engine: Got polling response: \(res)", 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 +248,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func flushProbeWait() {
|
private func flushProbeWait() {
|
||||||
// NSLog("flushing probe wait")
|
SocketLogger.log("Engine: 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 {
|
||||||
return
|
return
|
||||||
@ -294,8 +298,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
|
|
||||||
self.waitingForPost = true
|
self.waitingForPost = true
|
||||||
|
|
||||||
// NSLog("posting: \(postStr)")
|
SocketLogger.log("Engine: POSTing: \(postStr)", client: self)
|
||||||
// NSLog("Posting with WS status of: \(self.websocket)")
|
|
||||||
|
|
||||||
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,6 +352,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
|
|
||||||
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)
|
||||||
|
|
||||||
self.client?.didError("Engine tried to open while connected")
|
self.client?.didError("Engine tried to open while connected")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -405,7 +410,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
length += chr
|
length += chr
|
||||||
} else {
|
} else {
|
||||||
if length == "" || testLength(length, &n) {
|
if length == "" || testLength(length, &n) {
|
||||||
NSLog("parsing error: \(str)")
|
SocketLogger.err("Engine: parsing error: \(str)", client: self)
|
||||||
|
|
||||||
self.handlePollingFailed("Error parsing XHR message")
|
self.handlePollingFailed("Error parsing XHR message")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -443,7 +449,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func parseEngineMessage(var message:String, fromPolling:Bool) {
|
private func parseEngineMessage(var message:String, fromPolling:Bool) {
|
||||||
// NSLog("Engine got message: \(message)")
|
SocketLogger.log("Engine: Got message: \(message)", client: self)
|
||||||
|
|
||||||
if fromPolling {
|
if fromPolling {
|
||||||
fixDoubleUTF8(&message)
|
fixDoubleUTF8(&message)
|
||||||
}
|
}
|
||||||
@ -555,7 +562,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
/// 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) {
|
||||||
// println("Sending poll: \(msg) as type: \(type.rawValue)")
|
SocketLogger.log("Engine: Sending poll: \(msg) as type: \(type.rawValue)", client: self)
|
||||||
|
|
||||||
doubleEncodeUTF8(&msg)
|
doubleEncodeUTF8(&msg)
|
||||||
let strMsg = "\(type.rawValue)\(msg)"
|
let strMsg = "\(type.rawValue)\(msg)"
|
||||||
|
|
||||||
@ -578,7 +586,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
/// 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) {
|
||||||
// println("Sending ws: \(str) as type: \(type.rawValue)")
|
SocketLogger.log("Engine: Sending ws: \(str) as type: \(type.rawValue)", client: self)
|
||||||
|
|
||||||
self.ws?.writeString("\(type.rawValue)\(str)")
|
self.ws?.writeString("\(type.rawValue)\(str)")
|
||||||
|
|
||||||
if datas != nil {
|
if datas != nil {
|
||||||
@ -607,7 +616,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
|
|
||||||
private func upgradeTransport() {
|
private func upgradeTransport() {
|
||||||
if self.websocketConnected {
|
if self.websocketConnected {
|
||||||
// NSLog("Doing fast upgrade")
|
SocketLogger.log("Engine: 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-
|
||||||
self.fastUpgrade = true
|
self.fastUpgrade = true
|
||||||
@ -622,10 +632,10 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self!.websocket {
|
if self!.websocket {
|
||||||
// NSLog("writing ws: \(msg):\(data)")
|
SocketLogger.log("Engine: Writing ws: \(msg):\(data)", client: self!)
|
||||||
self?.sendWebSocketMessage(msg, withType: type, datas: data)
|
self?.sendWebSocketMessage(msg, withType: type, datas: data)
|
||||||
} else {
|
} else {
|
||||||
// NSLog("writing poll: \(msg):\(data)")
|
SocketLogger.log("Engine: Writing poll: \(msg):\(data)", client: self!)
|
||||||
self?.sendPollMessage(msg, withType: type, datas: data)
|
self?.sendPollMessage(msg, withType: type, datas: data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,7 +30,7 @@ private func emitAckCallback(socket:SocketIOClient, num:Int)
|
|||||||
socket.emitAck(num, withData: items)
|
socket.emitAck(num, withData: items)
|
||||||
}
|
}
|
||||||
|
|
||||||
class SocketEventHandler {
|
final class SocketEventHandler {
|
||||||
let event:String!
|
let event:String!
|
||||||
let callback:NormalCallback?
|
let callback:NormalCallback?
|
||||||
|
|
||||||
|
|||||||
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public final class SocketIOClient: NSObject, SocketEngineClient {
|
public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient {
|
||||||
private lazy var params = [String: AnyObject]()
|
private lazy var params = [String: AnyObject]()
|
||||||
private var anyHandler:((SocketAnyEvent) -> Void)?
|
private var anyHandler:((SocketAnyEvent) -> Void)?
|
||||||
private var _closed = false
|
private var _closed = false
|
||||||
@ -43,6 +43,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
let reconnectAttempts:Int!
|
let reconnectAttempts:Int!
|
||||||
var ackHandlers = SocketAckMap()
|
var ackHandlers = SocketAckMap()
|
||||||
var currentAck = -1
|
var currentAck = -1
|
||||||
|
var log = false
|
||||||
var waitingData = ContiguousArray<SocketPacket>()
|
var waitingData = ContiguousArray<SocketPacket>()
|
||||||
|
|
||||||
public let socketURL:String
|
public let socketURL:String
|
||||||
@ -92,12 +93,12 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
self.cookies = cookies
|
self.cookies = cookies
|
||||||
}
|
}
|
||||||
|
|
||||||
if let polling = opts!["forcePolling"] as? Bool {
|
if let log = opts!["log"] as? Bool {
|
||||||
self.forcePolling = polling
|
self.log = log
|
||||||
}
|
}
|
||||||
|
|
||||||
if let ws = opts!["forceWebsockets"] as? Bool {
|
if let polling = opts!["forcePolling"] as? Bool {
|
||||||
self.forceWebsockets = ws
|
self.forcePolling = polling
|
||||||
}
|
}
|
||||||
|
|
||||||
if var nsp = opts!["nsp"] as? String {
|
if var nsp = opts!["nsp"] as? String {
|
||||||
@ -121,6 +122,10 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
if let reconnectWait = opts!["reconnectWait"] as? Int {
|
if let reconnectWait = opts!["reconnectWait"] as? Int {
|
||||||
self.reconnectWait = abs(reconnectWait)
|
self.reconnectWait = abs(reconnectWait)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let ws = opts!["forceWebsockets"] as? Bool {
|
||||||
|
self.forceWebsockets = ws
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self.reconnectAttempts = -1
|
self.reconnectAttempts = -1
|
||||||
}
|
}
|
||||||
@ -133,10 +138,13 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func addEngine() {
|
private func addEngine() {
|
||||||
|
SocketLogger.log("Client: Adding engine", client: self)
|
||||||
|
|
||||||
self.engine = SocketEngine(client: self,
|
self.engine = SocketEngine(client: self,
|
||||||
forcePolling: self.forcePolling,
|
forcePolling: self.forcePolling,
|
||||||
forceWebsockets: self.forceWebsockets,
|
forceWebsockets: self.forceWebsockets,
|
||||||
withCookies: self.cookies)
|
withCookies: self.cookies,
|
||||||
|
logging: self.log)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -145,6 +153,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
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)
|
||||||
|
|
||||||
self.reconnects = false
|
self.reconnects = false
|
||||||
self._connecting = false
|
self._connecting = false
|
||||||
self._connected = false
|
self._connected = false
|
||||||
@ -212,6 +222,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func didConnect() {
|
func didConnect() {
|
||||||
|
SocketLogger.log("Client: Socket connected", client: self)
|
||||||
|
|
||||||
self._closed = false
|
self._closed = false
|
||||||
self._connected = true
|
self._connected = true
|
||||||
self._connecting = false
|
self._connecting = false
|
||||||
@ -228,6 +240,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
|
|
||||||
/// error
|
/// error
|
||||||
public func didError(reason:AnyObject) {
|
public func didError(reason:AnyObject) {
|
||||||
|
SocketLogger.err("Client: Error", client: self)
|
||||||
|
|
||||||
self.handleEvent("error", data: reason as? [AnyObject] ?? [reason],
|
self.handleEvent("error", data: reason as? [AnyObject] ?? [reason],
|
||||||
isInternalMessage: true)
|
isInternalMessage: true)
|
||||||
}
|
}
|
||||||
@ -299,6 +313,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
SocketParser.parseForEmit(packet)
|
SocketParser.parseForEmit(packet)
|
||||||
str = packet.createMessageForEvent(event)
|
str = packet.createMessageForEvent(event)
|
||||||
|
|
||||||
|
SocketLogger.log("Client: 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)
|
||||||
} else {
|
} else {
|
||||||
@ -319,6 +335,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
SocketParser.parseForEmit(packet)
|
SocketParser.parseForEmit(packet)
|
||||||
str = packet.createAck()
|
str = packet.createAck()
|
||||||
|
|
||||||
|
SocketLogger.log("Client: Emitting: \(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)
|
||||||
} else {
|
} else {
|
||||||
@ -333,6 +351,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SocketLogger.log("Client: Engine closed", client: self)
|
||||||
|
|
||||||
self._closed = true
|
self._closed = true
|
||||||
self._connected = false
|
self._connected = false
|
||||||
self.reconnects = false
|
self.reconnects = false
|
||||||
@ -343,6 +363,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
|
|
||||||
// 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)
|
||||||
|
|
||||||
self.ackHandlers.executeAck(ack,
|
self.ackHandlers.executeAck(ack,
|
||||||
items: data as? [AnyObject]? ?? data != nil ? [data!] : nil)
|
items: data as? [AnyObject]? ?? data != nil ? [data!] : nil)
|
||||||
}
|
}
|
||||||
@ -357,6 +379,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SocketLogger.log("Client: Got 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
|
||||||
self?.anyHandler?(SocketAnyEvent(event: event, items: data))
|
self?.anyHandler?(SocketAnyEvent(event: event, items: data))
|
||||||
@ -375,6 +399,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func joinNamespace() {
|
func joinNamespace() {
|
||||||
|
SocketLogger.log("Client: 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)
|
||||||
}
|
}
|
||||||
@ -384,6 +410,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
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)
|
||||||
|
|
||||||
self.handlers = self.handlers.filter {$0.event == event ? false : true}
|
self.handlers = self.handlers.filter {$0.event == event ? false : true}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -391,6 +419,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
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)
|
||||||
|
|
||||||
let handler = SocketEventHandler(event: name, callback: callback)
|
let handler = SocketEventHandler(event: name, callback: callback)
|
||||||
self.handlers.append(handler)
|
self.handlers.append(handler)
|
||||||
}
|
}
|
||||||
@ -438,6 +468,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.reconnectTimer == nil {
|
if self.reconnectTimer == nil {
|
||||||
|
SocketLogger.log("Client: Starting reconnect", client: self)
|
||||||
|
|
||||||
self._reconnecting = true
|
self._reconnecting = true
|
||||||
|
|
||||||
dispatch_async(dispatch_get_main_queue()) {[weak self] in
|
dispatch_async(dispatch_get_main_queue()) {[weak self] in
|
||||||
@ -451,6 +483,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SocketLogger.log("Client: 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)
|
||||||
|
|
||||||
|
|||||||
43
SocketIOClientSwift/SocketLogger.swift
Normal file
43
SocketIOClientSwift/SocketLogger.swift
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
//
|
||||||
|
// SocketLogger.swift
|
||||||
|
// SocketIO-Swift
|
||||||
|
//
|
||||||
|
// Created by Erik Little on 4/11/15.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in
|
||||||
|
// all copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
// THE SOFTWARE.
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
protocol SocketLogClient {
|
||||||
|
var log:Bool {get set}
|
||||||
|
}
|
||||||
|
|
||||||
|
final class SocketLogger {
|
||||||
|
static func log(message:String, client:SocketLogClient) {
|
||||||
|
if client.log {
|
||||||
|
NSLog("%@", message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static func err(message:String, client:SocketLogClient) {
|
||||||
|
if client.log {
|
||||||
|
NSLog("ERROR %@", message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -24,10 +24,16 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
final class SocketPacket {
|
final class SocketPacket: Printable {
|
||||||
var binary = ContiguousArray<NSData>()
|
var binary = ContiguousArray<NSData>()
|
||||||
var currentPlace = 0
|
var currentPlace = 0
|
||||||
var data:[AnyObject]?
|
var data:[AnyObject]?
|
||||||
|
var description:String {
|
||||||
|
var ret = "{SocketPacket\n\ttype: \(self.type?.rawValue)\n\tdata: \(self.data)\n\t" +
|
||||||
|
"id: \(self.id)\n\tplaceholders: \(self.placeholders)"
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
var id:Int?
|
var id:Int?
|
||||||
var justAck = false
|
var justAck = false
|
||||||
var nsp = ""
|
var nsp = ""
|
||||||
|
|||||||
@ -194,6 +194,8 @@ class SocketParser {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SocketLogger.log("Parser: Decoded packet as: \(p)", client: socket)
|
||||||
|
|
||||||
if p.type == SocketPacket.PacketType.EVENT {
|
if p.type == SocketPacket.PacketType.EVENT {
|
||||||
if checkNSP(p.nsp) {
|
if checkNSP(p.nsp) {
|
||||||
return
|
return
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user