@@ -15,8 +15,8 @@ public protocol IWebsocketProvider {
15
15
var delegate : Web3SocketDelegate { get set }
16
16
func connectSocket( ) throws
17
17
func disconnectSocket( ) throws
18
- func writeMessage( string: String )
19
- func writeMessage( data: Data )
18
+ func writeMessage( _ string: String )
19
+ func writeMessage( _ data: Data )
20
20
}
21
21
22
22
public enum InfuraWebsocketMethod : String , Encodable {
@@ -113,10 +113,10 @@ public class WebsocketProvider: Web3Provider, IWebsocketProvider, WebSocketDeleg
113
113
public var socket : WebSocket
114
114
public var delegate : Web3SocketDelegate
115
115
116
- public init ? ( endpoint: URL ,
117
- delegate wsdelegate: Web3SocketDelegate ,
118
- keystoreManager manager: KeystoreManager ? = nil ,
119
- network net: Networks ? = nil ) {
116
+ public init ? ( _ endpoint: URL ,
117
+ delegate wsdelegate: Web3SocketDelegate ,
118
+ keystoreManager manager: KeystoreManager ? = nil ,
119
+ network net: Networks ? = nil ) {
120
120
delegate = wsdelegate
121
121
attachedKeystoreManager = manager
122
122
url = endpoint
@@ -148,6 +148,42 @@ public class WebsocketProvider: Web3Provider, IWebsocketProvider, WebSocketDeleg
148
148
}
149
149
}
150
150
151
+ public init ? ( _ endpoint: String ,
152
+ delegate wsdelegate: Web3SocketDelegate ,
153
+ keystoreManager manager: KeystoreManager ? = nil ,
154
+ network net: Networks ? = nil ) {
155
+ guard let endpointUrl = URL ( string: endpoint) else { return nil }
156
+ delegate = wsdelegate
157
+ attachedKeystoreManager = manager
158
+ url = endpointUrl
159
+ socket = WebSocket ( url: endpointUrl)
160
+ socket. delegate = self
161
+ let endpointString = endpointUrl. absoluteString
162
+ if !( endpointString. hasPrefix ( " wss:// " ) || endpointString. hasPrefix ( " ws:// " ) ) {
163
+ return nil
164
+ }
165
+ if net == nil {
166
+ if endpointString. hasPrefix ( " wss:// " ) && endpointString. hasSuffix ( " .infura.io/ws " ) {
167
+ let networkString = endpointString. replacingOccurrences ( of: " wss:// " , with: " " )
168
+ . replacingOccurrences ( of: " .infura.io/ws " , with: " " )
169
+ switch networkString {
170
+ case " mainnet " :
171
+ network = Networks . Mainnet
172
+ case " rinkeby " :
173
+ network = Networks . Rinkeby
174
+ case " ropsten " :
175
+ network = Networks . Ropsten
176
+ case " kovan " :
177
+ network = Networks . Kovan
178
+ default :
179
+ break
180
+ }
181
+ }
182
+ } else {
183
+ network = net
184
+ }
185
+ }
186
+
151
187
public func connectSocket( ) {
152
188
socket. connect ( )
153
189
}
@@ -156,25 +192,39 @@ public class WebsocketProvider: Web3Provider, IWebsocketProvider, WebSocketDeleg
156
192
socket. disconnect ( )
157
193
}
158
194
159
- public static func connectToSocket( endpoint: URL ,
160
- delegate: Web3SocketDelegate ,
161
- keystoreManager manager: KeystoreManager ? = nil ,
162
- network net: Networks ? = nil ) -> WebsocketProvider ? {
163
- guard let socketProvider = WebsocketProvider ( endpoint: endpoint ,
164
- delegate: delegate,
165
- keystoreManager: manager,
166
- network: net) else {
195
+ public class func connectToSocket( _ endpoint: String ,
196
+ delegate: Web3SocketDelegate ,
197
+ keystoreManager manager: KeystoreManager ? = nil ,
198
+ network net: Networks ? = nil ) -> WebsocketProvider ? {
199
+ guard let socketProvider = WebsocketProvider ( endpoint,
200
+ delegate: delegate,
201
+ keystoreManager: manager,
202
+ network: net) else {
167
203
return nil
168
204
}
169
205
socketProvider. connectSocket ( )
170
206
return socketProvider
171
207
}
172
208
173
- public func writeMessage( string: String ) {
209
+ public class func connectToSocket( _ endpoint: URL ,
210
+ delegate: Web3SocketDelegate ,
211
+ keystoreManager manager: KeystoreManager ? = nil ,
212
+ network net: Networks ? = nil ) -> WebsocketProvider ? {
213
+ guard let socketProvider = WebsocketProvider ( endpoint,
214
+ delegate: delegate,
215
+ keystoreManager: manager,
216
+ network: net) else {
217
+ return nil
218
+ }
219
+ socketProvider. connectSocket ( )
220
+ return socketProvider
221
+ }
222
+
223
+ public func writeMessage( _ string: String ) {
174
224
socket. write ( string: string)
175
225
}
176
226
177
- public func writeMessage( data: Data ) {
227
+ public func writeMessage( _ data: Data ) {
178
228
socket. write ( data: data)
179
229
}
180
230
@@ -197,6 +247,6 @@ public class WebsocketProvider: Web3Provider, IWebsocketProvider, WebSocketDeleg
197
247
}
198
248
199
249
public func websocketDidReceivePong( socket: WebSocketClient , data: Data ? ) {
200
- print ( " Got pong! Maybe some data: \( data? . count) " )
250
+ print ( " Got pong! Maybe some data: \( String ( describing : data? . count) ) " )
201
251
}
202
252
}
0 commit comments