Skip to content

Commit 875e133

Browse files
committed
Reconnect is dont change to the correct scope of socket
1 parent 6afbc74 commit 875e133

File tree

7 files changed

+87
-106
lines changed

7 files changed

+87
-106
lines changed

src/env/browser/websocket.js

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ function websocket(dop, node, options) {
2323
:
2424
send_queue.push(message);
2525
}
26-
function sendQueue(message) {
26+
function sendQueue() {
2727
while (send_queue.length>0)
2828
socket.send(send_queue.shift());
2929
}
3030

3131
// Socket events
3232
function onopen() {
3333
// Reconnect
34-
if (node.readyState === dop.CONS.RECONNECT)
34+
if (node.readyState === dop.CONS.CONNECTING)
3535
socket.send(node.tokenServer);
3636
// Connect
3737
else {
@@ -42,38 +42,45 @@ function websocket(dop, node, options) {
4242
}
4343
function onmessage(message) {
4444
// Reconnecting
45-
if (node.readyState===dop.CONS.RECONNECT && message.data===node.tokenServer) {
45+
if (node.readyState===dop.CONS.CONNECTING && message.data===node.tokenServer) {
4646
node.readyState = dop.CONS.CONNECT;
4747
dop.core.setSocketToNode(node, socket);
4848
dop.core.emitReconnect(node, oldSocket);
49+
sendQueue();
4950
}
5051
else
5152
dop.core.emitMessage(node, message.data, message);
5253
}
5354
function onclose() {
55+
node.readyState = dop.CONS.CLOSE;
5456
dop.core.emitClose(node, socket);
5557
}
5658

5759
// dop events
58-
function onconnect() {
59-
if (node.readyState === dop.CONS.RECONNECT) {
60+
function onconnect(message_response) {
61+
if (node.readyState === dop.CONS.CONNECTING) {
6062
dop.core.emitDisconnect(node);
6163
dop.core.setSocketToNode(node, socket);
6264
}
65+
else
66+
socket.send(message_response);
6367
node.readyState = dop.CONS.CONNECT;
6468
dop.core.emitConnect(node);
69+
sendQueue();
6570
}
6671
function ondisconnect() {
6772
node.readyState = dop.CONS.CLOSE;
6873
socket.close();
6974
}
7075

7176
function reconnect() {
72-
oldSocket = socket;
73-
socket = new api(url);
74-
node.readyState = dop.CONS.RECONNECT;
75-
addListeners(socket, onopen, onmessage, onclose);
76-
removeListeners(oldSocket, onopen, onmessage, onclose);
77+
if (node.readyState !== dop.CONS.CONNECT) {
78+
oldSocket = socket;
79+
socket = new api(url);
80+
node.readyState = dop.CONS.CONNECTING;
81+
addListeners(socket, onopen, onmessage, onclose);
82+
removeListeners(oldSocket, onopen, onmessage, onclose);
83+
}
7784
}
7885

7986
// Setting up

src/protocol/onconnect.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,5 @@ dop.protocol.onconnect = function(node, request_id, request) {
33
var tokenServer=request[1],
44
response = dop.core.createResponse(request_id, 0);
55
node.tokenServer = tokenServer;
6-
node.emit(dop.CONS.CONNECT);
7-
node.send(JSON.stringify(response));
6+
node.emit(dop.CONS.CONNECT, JSON.stringify(response));
87
};

test/protocol/protocol_connect.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var test = require('tape');
2-
var dop = require('../dist/nodejs');
2+
var dop = require('../../dist/nodejs');
33
var dopServer = dop.create();
44
var dopClient = dop.create();
55
var localtransportlisten = require('dop-transports').listen.local;

test/protocol/protocol_queue.js

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
var test = require('tape');
2+
var dop = require('../../dist/nodejs');
3+
var dopServer = dop.create();
4+
var dopClient = dop.create();
5+
var uwstransportlisten = require('dop-transports').listen.uws;
6+
var localtransportlisten = require('dop-transports').listen.local;
7+
var localtransportconnect = require('dop-transports').connect.local;
8+
var socketiotransportlisten = require('dop-transports').listen.socketio;
9+
var socketiotransportconnect = require('dop-transports').connect.socketio;
10+
11+
// var server = dop.listen({transport:localtransportlisten});
12+
// var client = dopClient.connect({transport:localtransportconnect, listener:server});
13+
// server = dop.listen({transport:socketiotransportlisten});
14+
// client = dopClient.connect({transport:socketiotransportconnect});
15+
var server = dopServer.listen({timeout:2});
16+
var nodeClient = dopClient.connect();
17+
dopServer.env = 'SERVER'
18+
dopClient.env = 'CLIENT'
19+
var nodeServer, socketServer, socketClient;
20+
var tokenServer, tokenClient;
21+
var order = 0;
22+
23+
24+
25+
26+
var msg=0;
27+
function send() {
28+
nodeClient.send(String(msg));
29+
if (nodeServer)
30+
nodeServer.send(String(msg));
31+
if (msg++ < 25)
32+
setTimeout(send, 100);
33+
}
34+
send();
35+
36+
37+
38+
39+
40+
test('CONNECT TEST', function(t) {
41+
42+
server.on('connect', function(node){
43+
nodeServer = node;
44+
});
45+
server.on('message', function(node, message){
46+
// console.log( '❌ message `'+message+'`', node.token );
47+
});
48+
49+
nodeClient.on('message', function(message){
50+
console.log( '✅ message `'+message+'`' );
51+
});
52+
});
53+
54+
55+
56+
57+
58+
59+
setTimeout(function(){
60+
console.log( 'closing...' );
61+
nodeClient.socket.close();
62+
setTimeout(function(){
63+
console.log( 'reconnecting...' );
64+
nodeClient.reconnect();
65+
},500);
66+
}, 1000)

test/protocol/protocol_reconnect.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var test = require('tape');
2-
var dop = require('../dist/nodejs');
2+
var dop = require('../../dist/nodejs');
33
var dopServer = dop.create();
44
var dopClient = dop.create();
55
var uwstransportlisten = require('dop-transports').listen.uws;

test/protocol/protocol_reconnectfail.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var test = require('tape');
2-
var dop = require('../dist/nodejs');
2+
var dop = require('../../dist/nodejs');
33
var dopServer = dop.create();
44
var dopClient = dop.create();
55
var uwstransportlisten = require('dop-transports').listen.uws;

test/protocol_queue.js

Lines changed: 0 additions & 91 deletions
This file was deleted.

0 commit comments

Comments
 (0)