@@ -15,8 +15,8 @@ public protocol IWebsocketProvider {
1515 var delegate : Web3SocketDelegate { get set }
1616 func connectSocket( ) throws
1717 func disconnectSocket( ) throws
18- func writeMessage( string: String )
19- func writeMessage( data: Data )
18+ func writeMessage( _ string: String )
19+ func writeMessage( _ data: Data )
2020}
2121
2222public enum InfuraWebsocketMethod : String , Encodable {
@@ -113,10 +113,10 @@ public class WebsocketProvider: Web3Provider, IWebsocketProvider, WebSocketDeleg
113113 public var socket : WebSocket
114114 public var delegate : Web3SocketDelegate
115115
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 ) {
120120 delegate = wsdelegate
121121 attachedKeystoreManager = manager
122122 url = endpoint
@@ -148,6 +148,42 @@ public class WebsocketProvider: Web3Provider, IWebsocketProvider, WebSocketDeleg
148148 }
149149 }
150150
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+
151187 public func connectSocket( ) {
152188 socket. connect ( )
153189 }
@@ -156,25 +192,39 @@ public class WebsocketProvider: Web3Provider, IWebsocketProvider, WebSocketDeleg
156192 socket. disconnect ( )
157193 }
158194
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 {
167203 return nil
168204 }
169205 socketProvider. connectSocket ( )
170206 return socketProvider
171207 }
172208
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 ) {
174224 socket. write ( string: string)
175225 }
176226
177- public func writeMessage( data: Data ) {
227+ public func writeMessage( _ data: Data ) {
178228 socket. write ( data: data)
179229 }
180230
@@ -197,6 +247,6 @@ public class WebsocketProvider: Web3Provider, IWebsocketProvider, WebSocketDeleg
197247 }
198248
199249 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) ) " )
201251 }
202252}
0 commit comments