22
33function _interopDefault ( ex ) { return ( ex && ( typeof ex === 'object' ) && 'default' in ex ) ? ex [ 'default' ] : ex ; }
44
5- var io = _interopDefault ( require ( 'socket.io-client' ) ) ;
65var getRandomValues = _interopDefault ( require ( 'get-random-values' ) ) ;
76var Eos = _interopDefault ( require ( 'eosjs' ) ) ;
87require ( 'isomorphic-fetch' ) ;
@@ -50,20 +49,17 @@ class StorageService {
5049
5150const { ecc} = Eos . modules ;
5251
53- const host = 'ws:// 127.0.0.1:50005/socket.io/?EIO=3&transport=websocket ' ;
52+ const host = '127.0.0.1:50005' ;
5453
5554let socket = null ;
5655let connected = false ;
5756let paired = false ;
5857
5958let plugin ;
6059let openRequests = [ ] ;
61-
62- let allowReconnects = true ;
6360let reconnectionTimeout = null ;
6461
6562const reconnectOnAbnormalDisconnection = ( ) => {
66- if ( ! allowReconnects ) return ;
6763
6864 clearTimeout ( reconnectionTimeout ) ;
6965 reconnectionTimeout = setTimeout ( ( ) => {
@@ -94,11 +90,16 @@ const getOrigin = () => {
9490let appkey = StorageService . getAppKey ( ) ;
9591if ( ! appkey ) appkey = 'appkey:' + random ( ) ;
9692
93+ const send = ( type = null , data = null ) => {
94+ if ( type === null && data === null ) socket . send ( '40/scatter' ) ;
95+ else socket . send ( '42/scatter,' + JSON . stringify ( [ type , data ] ) ) ;
96+ } ;
97+
9798let pairingPromise = null ;
9899const pair = ( passthrough = false ) => {
99100 return new Promise ( ( resolve , reject ) => {
100101 pairingPromise = { resolve, reject} ;
101- socket . emit ( 'pair' , { data :{ appkey, origin :getOrigin ( ) , passthrough } , plugin} ) ;
102+ send ( 'pair' , { data :{ appkey, origin :getOrigin ( ) , passthrough } , plugin} ) ;
102103 } )
103104} ;
104105
@@ -124,17 +125,44 @@ class SocketService {
124125 reconnectOnAbnormalDisconnection ( ) ;
125126 } , this . timeout ) ) ,
126127 new Promise ( ( resolve , reject ) => {
127- socket = io . connect ( `${ host } /scatter` , { secure :true , reconnection : false , rejectUnauthorized : false } ) ;
128+ socket = new WebSocket ( `ws://${ host } /socket.io/?EIO=3&transport=websocket` ) ;
129+
130+ socket . onclose = x => {
131+ resolve ( false ) ;
132+ } ;
128133
129- socket . on ( 'connected' , ( ) => {
134+ socket . onerror = err => {
135+ console . error ( 'err' , err ) ;
136+ resolve ( false ) ;
137+ } ;
138+
139+ socket . onopen = x => {
140+ send ( ) ;
130141 clearTimeout ( reconnectionTimeout ) ;
131142 connected = true ;
132143 pair ( true ) . then ( ( ) => {
144+ console . log ( 'then pair' , connected ) ;
133145 resolve ( true ) ;
134146 } ) ;
135- } ) ;
147+ } ;
148+
149+ socket . onmessage = msg => {
150+ // Handshaking/Upgrading
151+ if ( msg . data . indexOf ( '42/scatter' ) === - 1 ) return false ;
152+
153+
154+ // Real message
155+ const [ type , data ] = JSON . parse ( msg . data . replace ( '42/scatter,' , '' ) ) ;
136156
137- socket . on ( 'paired' , result => {
157+ switch ( type ) {
158+ case 'paired' : return msg_paired ( data ) ;
159+ case 'rekey' : return msg_rekey ( ) ;
160+ case 'api' : return msg_api ( data ) ;
161+ }
162+ } ;
163+
164+ const msg_paired = result => {
165+ console . log ( 'paired' , result ) ;
138166 paired = result ;
139167
140168 if ( paired ) {
@@ -148,44 +176,46 @@ class SocketService {
148176 }
149177
150178 pairingPromise . resolve ( result ) ;
151- } ) ;
179+ } ;
152180
153- socket . on ( 'rekey' , ( ) => {
181+ const msg_rekey = ( ) => {
154182 appkey = 'appkey:' + random ( ) ;
155- socket . emit ( 'rekeyed' , { data :{ appkey, origin :getOrigin ( ) } , plugin} ) ;
156- } ) ;
157-
158- socket . on ( 'event' , event => {
159- console . log ( 'event' , event ) ;
160- } ) ;
183+ send ( 'rekeyed' , { data :{ appkey, origin :getOrigin ( ) } , plugin} ) ;
184+ } ;
161185
162- socket . on ( 'api' , result => {
186+ const msg_api = result => {
163187 const openRequest = openRequests . find ( x => x . id === result . id ) ;
164188 if ( ! openRequest ) return ;
165189 if ( typeof result . result === 'object'
166190 && result . result !== null
167191 && result . result . hasOwnProperty ( 'isError' ) ) openRequest . reject ( result . result ) ;
168192 else openRequest . resolve ( result . result ) ;
169- } ) ;
170-
171- socket . on ( 'disconnect' , ( ) => {
172- console . log ( 'Disconnected' ) ;
173- connected = false ;
174- socket = null ;
175-
176- // If bad disconnect, retry connection
177- reconnectOnAbnormalDisconnection ( ) ;
178- } ) ;
179-
180- socket . on ( 'connect_error' , ( ) => {
181- allowReconnects = false ;
182- resolve ( false ) ;
183- } ) ;
184-
185- socket . on ( 'rejected' , reason => {
186- console . error ( 'reason' , reason ) ;
187- reject ( reason ) ;
188- } ) ;
193+ } ;
194+
195+
196+ //
197+ // socket.on('event', event => {
198+ // console.log('event', event);
199+ // });
200+ //
201+ // socket.on('disconnect', () => {
202+ // console.log('Disconnected')
203+ // connected = false;
204+ // socket = null;
205+ //
206+ // // If bad disconnect, retry connection
207+ // reconnectOnAbnormalDisconnection();
208+ // });
209+ //
210+ // socket.on('connect_error', () => {
211+ // allowReconnects = false;
212+ // resolve(false);
213+ // });
214+ //
215+ // socket.on('rejected', reason => {
216+ // console.error('reason', reason);
217+ // reject(reason);
218+ // });
189219 } )
190220 ] )
191221 }
@@ -224,7 +254,7 @@ class SocketService {
224254
225255
226256 openRequests . push ( Object . assign ( request , { resolve, reject} ) ) ;
227- socket . emit ( 'api' , { data :request , plugin} ) ;
257+ send ( 'api' , { data :request , plugin} ) ;
228258 } ) ;
229259 } ) ;
230260 }
@@ -305,7 +335,7 @@ class EOS extends Plugin {
305335 if ( ! network . isValid ( ) ) throw Error . noNetwork ( ) ;
306336 const httpEndpoint = `${ network . protocol } ://${ network . hostport ( ) } ` ;
307337
308- const chainId = network . hasOwnProperty ( 'chainId' ) && network . chainId . length ? network . chainId : options . chainId ;
338+ const chainId = network . hasOwnProperty ( 'chainId' ) && network . chainId . length ? network . chainId : _options . chainId ;
309339
310340 // The proxy stands between the eosjs object and scatter.
311341 // This is used to add special functionality like adding `requiredFields` arrays to transactions
0 commit comments