99( function factory ( root ) {
1010
1111var dop = {
12- version : '0.3.2' ,
13- name : 'dop' , // Useful for transport (websockets namespaces)
12+ name : 'dop' ,
1413 create : factory ,
1514
1615 // Where all the internal information is stored
@@ -163,7 +162,6 @@ function websocket(dop, node, options) {
163162
164163 var url = 'ws://localhost:4444/' + dop . name ,
165164 args = arguments ;
166-
167165 if ( typeof options . url == 'string' )
168166 url = options . url . replace ( 'http' , 'ws' ) ;
169167 else if ( typeof window != 'undefined' && / h t t p / . test ( window . location . href ) ) {
@@ -177,21 +175,19 @@ function websocket(dop, node, options) {
177175 socket = new api ( url ) ,
178176 send_queue = [ ] ;
179177
180-
181- // We use this function as alias to store messages when connection is not CONNECT
178+ // Helpers
182179 function send ( message ) {
183180 ( socket . readyState === socket . constructor . OPEN && node . readyState === dop . CONS . CONNECT ) ?
184181 socket . send ( message )
185182 :
186183 send_queue . push ( message ) ;
187184 }
188-
189- // This function emit all the queue messages
190185 function sendQueue ( message ) {
191186 while ( send_queue . length > 0 )
192187 socket . send ( send_queue . shift ( ) ) ;
193188 }
194189
190+ // Socket events
195191 function onopen ( ) {
196192 // Reconnect
197193 if ( node . readyState === dop . CONS . RECONNECT )
@@ -207,46 +203,49 @@ function websocket(dop, node, options) {
207203 // Reconnecting
208204 if ( node . readyState === dop . CONS . RECONNECT && message . data === node . tokenServer ) {
209205 node . readyState = dop . CONS . CONNECT ;
210- // node.socket = socket;
211- dop . core . emitReconnectClient ( node , oldSocket ) ;
212- // sendQueue();
206+ dop . core . setSocketToNode ( node , socket ) ;
207+ dop . core . emitReconnect ( node , oldSocket ) ;
213208 }
214209 else
215- dop . core . emitMessage ( node , socket , message . data , message ) ;
210+ dop . core . emitMessage ( node , message . data , message ) ;
216211 }
217212 function onclose ( ) {
218213 dop . core . emitClose ( node , socket ) ;
219214 }
220215
221- // Adding listeners
222- addListeners ( socket , onopen , onmessage , onclose ) ;
223- node . readyState = dop . CONS . CLOSE ;
224- node . reconnect = function ( ) {
225- oldSocket = socket ;
226- socket = new api ( url ) ;
227- addListeners ( socket , onopen , onmessage , onclose ) ;
228- removeListeners ( oldSocket , onopen , onmessage , onclose ) ;
229- node . readyState = dop . CONS . RECONNECT ;
230- } ;
231- node . on ( dop . CONS . CONNECT , function ( ) {
216+ // dop events
217+ function onconnect ( ) {
232218 if ( node . readyState === dop . CONS . RECONNECT ) {
233- node . socket = oldSocket ;
234219 dop . core . emitDisconnect ( node ) ;
235- node . socket = socket ;
220+ dop . core . setSocketToNode ( node , socket ) ;
236221 }
237222 node . readyState = dop . CONS . CONNECT ;
238223 dop . core . emitConnect ( node ) ;
239- } ) ;
240- node . on ( dop . CONS . SEND , function ( message ) {
241- send ( message ) ;
242- } ) ;
243- node . on ( dop . CONS . DISCONNECT , function ( ) {
224+ }
225+ function ondisconnect ( ) {
244226 node . readyState = dop . CONS . CLOSE ;
245227 socket . close ( ) ;
246- } ) ;
228+ }
247229
230+ function reconnect ( ) {
231+ oldSocket = socket ;
232+ socket = new api ( url ) ;
233+ node . readyState = dop . CONS . RECONNECT ;
234+ addListeners ( socket , onopen , onmessage , onclose ) ;
235+ removeListeners ( oldSocket , onopen , onmessage , onclose ) ;
236+ }
237+
238+ // Setting up
239+ dop . core . setSocketToNode ( node , socket ) ;
240+ node . readyState = dop . CONS . CLOSE ;
241+ node . reconnect = reconnect ;
242+ node . on ( dop . CONS . CONNECT , onconnect ) ;
243+ node . on ( dop . CONS . SEND , send ) ;
244+ node . on ( dop . CONS . DISCONNECT , ondisconnect ) ;
245+ addListeners ( socket , onopen , onmessage , onclose ) ;
246+
248247 return socket ;
249- } ;
248+ }
250249
251250function addListeners ( socket , onopen , onmessage , onclose ) {
252251 socket . addEventListener ( 'open' , onopen ) ;
@@ -271,7 +270,6 @@ else {
271270 root . dopTransportsConnectWebsocket = websocket ;
272271}
273272
274-
275273} ) ( this ) ;
276274
277275
@@ -1054,18 +1052,19 @@ dop.core.emitConnect = function(node) {
10541052////////// src/core/api_transports/emitDisconnect.js
10551053
10561054dop . core . emitDisconnect = function ( node ) {
1057- if ( node . listener )
1055+ if ( node . listener ) {
1056+ dop . core . unregisterNode ( node ) ;
10581057 node . listener . emit ( 'disconnect' , node ) ;
1058+ }
10591059 node . emit ( 'disconnect' ) ;
1060- dop . core . unregisterNode ( node ) ;
10611060} ;
10621061
10631062
10641063
10651064
10661065////////// src/core/api_transports/emitMessage.js
10671066
1068- dop . core . emitMessage = function ( node , socket , message_string , message_raw ) {
1067+ dop . core . emitMessage = function ( node , message_string , message_raw ) {
10691068
10701069 // If server
10711070 if ( node . listener )
@@ -1191,7 +1190,6 @@ dop.core.emitOpen = function(listener_node, socket, transport) {
11911190 node . listener = listener_node ;
11921191 node . try_connects = listener_node . options . try_connects ;
11931192 }
1194- node . socket = socket ;
11951193 node . transport = transport ;
11961194 dop . core . registerNode ( node ) ;
11971195 listener_node . emit ( 'open' , socket ) ;
@@ -1203,19 +1201,11 @@ dop.core.emitOpen = function(listener_node, socket, transport) {
12031201
12041202////////// src/core/api_transports/emitReconnect.js
12051203
1206- dop . core . emitReconnect = function ( node , newNode ) {
1207- var oldSocket = node . socket ;
1208- node . socket = newNode . socket ;
1209- node . socket [ CONS . socket_token ] = node . token ;
1210- node . listener . emit ( 'reconnect' , node , oldSocket ) ;
1211- node . emit ( 'reconnect' , oldSocket ) ;
1212- dop . core . unregisterNode ( newNode ) ;
1213- } ;
1214-
1215- dop . core . emitReconnectClient = function ( node , newSocket ) {
1216- var oldSocket = node . socket ;
1217- node . socket = newSocket ;
1218- node . socket [ CONS . socket_token ] = node . token ;
1204+ dop . core . emitReconnect = function ( node , oldSocket , newNode ) {
1205+ if ( node . listener ) {
1206+ dop . core . unregisterNode ( newNode ) ;
1207+ node . listener . emit ( 'reconnect' , node , oldSocket ) ;
1208+ }
12191209 node . emit ( 'reconnect' , oldSocket ) ;
12201210} ;
12211211
@@ -2210,7 +2200,7 @@ dop.core.connector = function(args) {
22102200 args . unshift ( dop , node ) ;
22112201 node . options = args [ 2 ] ;
22122202 node . transport = node . options . transport ;
2213- node . socket = node . options . transport . apply ( this , args ) ;
2203+ node . options . transport . apply ( this , args ) ;
22142204 return node ;
22152205} ;
22162206
@@ -2389,7 +2379,6 @@ dop.core.getRejectError = function(error) {
23892379////////// src/core/protocol/registerNode.js
23902380
23912381dop . core . registerNode = function ( node ) {
2392- node . socket [ CONS . socket_token ] = node . token ;
23932382 dop . data . node [ node . token ] = node ;
23942383} ;
23952384
@@ -2436,6 +2425,16 @@ dop.core.remoteFunction = function $DOP_REMOTE_function(object, property) {
24362425
24372426
24382427
2428+ ////////// src/core/protocol/setSocketToNode.js
2429+
2430+ dop . core . setSocketToNode = function ( node , socket ) {
2431+ node . socket = socket ;
2432+ socket [ CONS . socket_token ] = node . token ;
2433+ } ;
2434+
2435+
2436+
2437+
24392438////////// src/core/protocol/storeRequest.js
24402439
24412440dop . core . storeRequest = function ( node , request ) {
0 commit comments