@@ -31,15 +31,15 @@ extension SocketParsable where Self: SocketIOClientSpec {
31
31
private func isCorrectNamespace( _ nsp: String ) -> Bool {
32
32
return nsp == self . nsp
33
33
}
34
-
34
+
35
35
private func handleConnect( _ packetNamespace: String ) {
36
36
if packetNamespace == " / " && nsp != " / " {
37
37
joinNamespace ( nsp)
38
38
} else {
39
- didConnect ( )
39
+ didConnect ( toNamespace : packetNamespace )
40
40
}
41
41
}
42
-
42
+
43
43
private func handlePacket( _ pack: SocketPacket ) {
44
44
switch pack. type {
45
45
case . event where isCorrectNamespace ( pack. nsp) :
@@ -60,40 +60,40 @@ extension SocketParsable where Self: SocketIOClientSpec {
60
60
DefaultSocketLogger . Logger. log ( " Got invalid packet: %@ " , type: " SocketParser " , args: pack. description)
61
61
}
62
62
}
63
-
63
+
64
64
/// Parses a messsage from the engine. Returning either a string error or a complete SocketPacket
65
65
func parseString( _ message: String ) -> Either < String , SocketPacket > {
66
66
var reader = SocketStringReader ( message: message)
67
-
67
+
68
68
guard let type = Int ( reader. read ( count: 1 ) ) . flatMap ( { SocketPacket . PacketType ( rawValue: $0) } ) else {
69
69
return . left( " Invalid packet type " )
70
70
}
71
-
71
+
72
72
if !reader. hasNext {
73
73
return . right( SocketPacket ( type: type, nsp: " / " ) )
74
74
}
75
-
75
+
76
76
var namespace = " / "
77
77
var placeholders = - 1
78
-
78
+
79
79
if type == . binaryEvent || type == . binaryAck {
80
80
if let holders = Int ( reader. readUntilOccurence ( of: " - " ) ) {
81
81
placeholders = holders
82
82
} else {
83
83
return . left( " Invalid packet " )
84
84
}
85
85
}
86
-
86
+
87
87
if reader. currentCharacter == " / " {
88
- namespace = reader. readUntilOccurence ( of: " , " )
88
+ namespace = reader. readUntilOccurence ( of: " , " )
89
89
}
90
-
90
+
91
91
if !reader. hasNext {
92
92
return . right( SocketPacket ( type: type, nsp: namespace, placeholders: placeholders) )
93
93
}
94
-
94
+
95
95
var idString = " "
96
-
96
+
97
97
if type == . error {
98
98
reader. advance ( by: - 1 )
99
99
} else {
@@ -106,13 +106,13 @@ extension SocketParsable where Self: SocketIOClientSpec {
106
106
}
107
107
}
108
108
}
109
-
109
+
110
110
var dataArray = String ( message. utf16 [ message. utf16. index ( reader. currentIndex, offsetBy: 1 ) ..< message. utf16. endIndex] ) !
111
-
111
+
112
112
if type == . error && !dataArray. hasPrefix ( " [ " ) && !dataArray. hasSuffix ( " ] " ) {
113
113
dataArray = " [ " + dataArray + " ] "
114
114
}
115
-
115
+
116
116
switch parseData ( dataArray) {
117
117
case let . left( err) :
118
118
return . left( err)
@@ -121,7 +121,7 @@ extension SocketParsable where Self: SocketIOClientSpec {
121
121
nsp: namespace, placeholders: placeholders) )
122
122
}
123
123
}
124
-
124
+
125
125
// Parses data for events
126
126
private func parseData( _ data: String ) -> Either < String , [ Any ] > {
127
127
do {
@@ -130,13 +130,13 @@ extension SocketParsable where Self: SocketIOClientSpec {
130
130
return . left( " Error parsing data for packet " )
131
131
}
132
132
}
133
-
133
+
134
134
// Parses messages recieved
135
135
func parseSocketMessage( _ message: String ) {
136
136
guard !message. isEmpty else { return }
137
-
137
+
138
138
DefaultSocketLogger . Logger. log ( " Parsing %@ " , type: " SocketParser " , args: message)
139
-
139
+
140
140
switch parseString ( message) {
141
141
case let . left( err) :
142
142
DefaultSocketLogger . Logger. error ( " \( err) : %@ " , type: " SocketParser " , args: message)
@@ -145,18 +145,18 @@ extension SocketParsable where Self: SocketIOClientSpec {
145
145
handlePacket ( pack)
146
146
}
147
147
}
148
-
148
+
149
149
func parseBinaryData( _ data: Data ) {
150
150
guard !waitingPackets. isEmpty else {
151
151
DefaultSocketLogger . Logger. error ( " Got data when not remaking packet " , type: " SocketParser " )
152
152
return
153
153
}
154
-
154
+
155
155
// Should execute event?
156
156
guard waitingPackets [ waitingPackets. count - 1 ] . addData ( data) else { return }
157
-
157
+
158
158
let packet = waitingPackets. removeLast ( )
159
-
159
+
160
160
if packet. type != . binaryAck {
161
161
handleEvent ( packet. event, data: packet. args, isInternalMessage: false , withAck: packet. id)
162
162
} else {
0 commit comments