33( function factory ( root ) {
44
55var dop = {
6- version : '0.1 .0' ,
6+ version : '0.3 .0' ,
77 name : 'dop' , // Useful for transport (websockets namespaces)
88 create : factory ,
99
@@ -47,7 +47,7 @@ dop.connect = function(options) {
4747 options = args [ 0 ] = { } ;
4848
4949 if ( typeof options . transport != 'function' )
50- options . transport = dopTransportConnectWebSocket ;
50+ options . transport = connectWebsocket ;
5151
5252 return dop . core . connector ( args ) ;
5353} ;
@@ -144,22 +144,33 @@ emitter.emit(name, 4);
144144
145145////////// src/env/browser/websocket.js
146146
147- var dopTransportConnectWebSocket = function ( dop , node , options ) {
147+ var connectWebsocket = function ( dop , node , options ) {
148148
149149 var url = 'ws://localhost:4444/' ;
150150
151151 if ( typeof options . url == 'string' )
152- url = options . url ;
153- else if ( / h t t p / . test ( window . location . href ) ) {
154- var domain_prefix = / ( s s | p s ) ? : \/ \/ ( [ ^ \/ ] + ) \/ ? ( .+ ) ? / . exec ( window . location . href ) ;
155- var protocol = domain_prefix [ 1 ] ? 'wss' : 'ws' ;
152+ url = options . url . replace ( 'http' , 'ws' ) ;
153+ else if ( typeof window != 'undefined' && / h t t p / . test ( window . location . href ) ) {
154+ var domain_prefix = / ( s s | p s ) ? : \/ \/ ( [ ^ \/ ] + ) \/ ? ( .+ ) ? / . exec ( window . location . href ) ,
155+ protocol = domain_prefix [ 1 ] ? 'wss' : 'ws' ;
156156 url = protocol + '://' + domain_prefix [ 2 ] . toLocaleLowerCase ( ) + '/' ;
157157 }
158158
159- var socket = new options . transport . api ( url ) ;
159+ var socket = new options . transport . api ( url ) ,
160+ send = socket . send ,
161+ send_queue = [ ] ;
162+
163+ socket . send = function ( message ) {
164+ ( socket . readyState !== 1 ) ?
165+ send_queue . push ( message )
166+ :
167+ send . call ( socket , message ) ;
168+ } ;
160169
161170 socket . addEventListener ( 'open' , function ( ) {
162171 dop . core . onopen ( node , socket ) ;
172+ while ( send_queue . length > 0 )
173+ send . call ( socket , send_queue . shift ( ) ) ;
163174 } ) ;
164175
165176 socket . addEventListener ( 'message' , function ( message ) {
@@ -177,12 +188,29 @@ var dopTransportConnectWebSocket = function(dop, node, options) {
177188 return socket ;
178189} ;
179190
180- dopTransportConnectWebSocket . api = window . WebSocket ;
191+ // //nodejs
192+ // window=undefined
193+ // module.exports = true
194+ // dop=undefined
195+
196+ // //es6
197+ // window={}
198+ // module.exports = {}
199+ // dop=undefined
181200
182- if ( typeof dop == 'undefined' && typeof module == 'object' && module . exports )
183- module . exports = dopTransportConnectWebSocket ;
201+ // //cdn
202+ // window={}
203+ // module.exports = undefined
204+ // dop={}
184205
185206
207+ if ( typeof dop == 'undefined' && typeof module == 'object' && module . exports ) {
208+ connectWebsocket . api = require ( 'ws' ) ;
209+ module . exports = connectWebsocket ;
210+ }
211+ else if ( typeof window != 'undefined' )
212+ connectWebsocket . api = window . WebSocket ;
213+
186214
187215
188216
@@ -1039,13 +1067,11 @@ Object.assign(dop.core.listener.prototype, dop.util.emitter.prototype);
10391067dop . core . node = function ( ) {
10401068 // Inherit emitter
10411069 dop . util . emitter . call ( this ) ; //https://jsperf.com/inheritance-call-vs-object-assign
1042- this . status = 0 ;
10431070 this . object_owned = { } ;
10441071 this . object_subscribed = { } ;
10451072 this . request_inc = 1 ;
10461073 this . requests = { } ;
10471074 this . requests_queue = [ ] ;
1048- this . sends_queue = [ ] ;
10491075} ;
10501076// Inherit emitter
10511077Object . assign ( dop . core . node . prototype , dop . util . emitter . prototype ) ;
@@ -2237,7 +2263,7 @@ dop.core.onopen = function(listener_or_node, socket, transport) {
22372263
22382264 listener_or_node . emit ( 'open' , socket ) ;
22392265
2240- // if side is listener we send token
2266+ // if listener_or_node is listener we send token
22412267 if ( listener_or_node . socket !== socket ) {
22422268 var node = new dop . core . node ( ) ;
22432269 node . transport = transport ;
@@ -2246,7 +2272,6 @@ dop.core.onopen = function(listener_or_node, socket, transport) {
22462272 node . listener = listener_or_node ;
22472273 dop . protocol . connect ( node ) ;
22482274 }
2249-
22502275} ;
22512276
22522277
@@ -2258,7 +2283,6 @@ dop.core.onopen = function(listener_or_node, socket, transport) {
22582283////////// src/core/protocol/registerNode.js
22592284
22602285dop . core . registerNode = function ( node , token ) {
2261- node . status = 1 ;
22622286 node . token = token ;
22632287 node . socket [ CONS . socket_token ] = token ;
22642288 dop . data . node [ token ] = node ;
@@ -2343,7 +2367,6 @@ dop.protocol._onconnect = function(node, request_id, request, response) {
23432367
23442368 // Node is connected correctly
23452369 if ( response [ 0 ] === 0 ) {
2346- node . status = 1 ;
23472370 node . listener . emit ( 'connect' , node , token ) ;
23482371 node . emit ( 'connect' , token ) ;
23492372 }
@@ -2448,11 +2471,11 @@ dop.protocol.instructions = {
24482471
24492472
24502473 // Server -> Client
2451- connect : 0 , // [ 1234, 0, <user_token>]
2474+ connect : 0 , // [ 1234, 0, <user_token>, <options> ]
24522475 // [-1234, 0]
24532476
24542477 // Client -> Server
2455- reconnect : 1 , // [ 1234, 1, <new_user_token>, <old_user_token>]
2478+ reconnect : 1 , // [ 1234, 1, <new_user_token>, <old_user_token>, <options> ]
24562479 // [-1234, 0]
24572480
24582481 // Subscriptor -> Owner
0 commit comments