Skip to content

Commit 35fe72a

Browse files
committed
Test protocol_reconnect passed
1 parent c3e3dbf commit 35fe72a

File tree

3 files changed

+28
-44
lines changed

3 files changed

+28
-44
lines changed

src/env/browser/websocket.js

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,18 @@ function websocket(dop, node, options) {
1212
url = protocol+'://'+domain_prefix[2].toLocaleLowerCase()+'/'+dop.name;
1313
}
1414

15-
15+
// Variables
1616
var api = options.transport.getApi(),
1717
socket = new api(url),
1818
send_queue = [];
1919

2020

21-
// We use this function as alias to store messages when connection is not OPEN
21+
// We use this function as alias to store messages when connection is not CONNECT
2222
function send(message) {
23-
(socket.readyState === socket.constructor.OPEN && node.readyState === dop.CONS.CONNECT) ?
23+
(socket.readyState===socket.constructor.OPEN && node.readyState===dop.CONS.CONNECT) ?
2424
socket.send(message)
2525
:
26-
console.log( 'save', message );
26+
send_queue.push(message);
2727
}
2828

2929
// This function emit all the queue messages
@@ -45,28 +45,30 @@ function websocket(dop, node, options) {
4545
dop.core.emitOpen(node, socket, options.transport);
4646
}
4747
function onmessage(message) {
48-
// // Reconnecting
49-
// if (message.data===node.tokenServer && node.readyState===dop.CONS.RECONNECT) {
50-
// node.readyState = dop.CONS.CONNECT;
51-
// dop.core.emitReconnectClient(node, oldSocket);
52-
// sendQueue();
53-
// }
54-
// else
48+
// Reconnecting
49+
if (message.data===node.tokenServer && node.readyState===dop.CONS.RECONNECT) {
50+
node.readyState = dop.CONS.CONNECT;
51+
dop.core.emitReconnectClient(node, oldSocket);
52+
// sendQueue();
53+
}
54+
else
5555
dop.core.emitMessage(node, socket, message.data, message);
5656
}
5757
function onclose() {
5858
dop.core.emitClose(node, socket);
5959
}
6060

61+
// Adding listeners
62+
addListeners(socket, onopen, onmessage, onclose);
6163

6264
node.readyState = dop.CONS.CLOSE;
63-
// node.reconnect = function() {
64-
// oldSocket = socket;
65-
// node.socket = socket = new api(url);
66-
// addListeners(socket, onopen, onmessage, onclose);
67-
// removeListeners(oldSocket, onopen, onmessage, onclose);
68-
// node.readyState = dop.CONS.RECONNECT;
69-
// };
65+
node.reconnect = function() {
66+
oldSocket = socket;
67+
node.socket = socket = new api(url);
68+
addListeners(socket, onopen, onmessage, onclose);
69+
removeListeners(oldSocket, onopen, onmessage, onclose);
70+
node.readyState = dop.CONS.RECONNECT;
71+
};
7072
node.on(dop.CONS.CONNECT, function() {
7173
node.readyState = dop.CONS.CONNECT;
7274
dop.core.emitConnect(node);
@@ -79,7 +81,7 @@ function websocket(dop, node, options) {
7981
socket.close();
8082
});
8183

82-
addListeners(socket, onopen, onmessage, onclose);
84+
8385

8486
return socket;
8587
};

src/protocol/onconnect.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ 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.send(JSON.stringify(response));
76
node.emit(dop.CONS.CONNECT);
7+
node.send(JSON.stringify(response));
88
};

test/protocol_reconnect.js

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ var test = require('tape');
22
var dop = require('../dist/nodejs');
33
var dopServer = dop.create();
44
var dopClient = dop.create();
5-
var uwstransportlisten = require('dop-transports').listen.ws;
5+
var uwstransportlisten = require('dop-transports').listen.uws;
66
var localtransportlisten = require('dop-transports').listen.local;
77
var localtransportconnect = require('dop-transports').connect.local;
88
var socketiotransportlisten = require('dop-transports').listen.socketio;
@@ -12,15 +12,15 @@ var socketiotransportconnect = require('dop-transports').connect.socketio;
1212
// var client = dopClient.connect({transport:localtransportconnect, listener:server});
1313
// server = dop.listen({transport:socketiotransportlisten});
1414
// client = dopClient.connect({transport:socketiotransportconnect});
15-
var server = dopServer.listen({transport:uwstransportlisten, timeout:2});
15+
var server = dopServer.listen({timeout:2});
1616
var nodeClient = dopClient.connect();
1717
dopServer.env = 'SERVER'
1818
dopClient.env = 'CLIENT'
1919
var nodeServer, socketServer, socketClient;
2020
var tokenServer, tokenClient;
2121
var order = 0;
2222

23-
test('CONNECT TEST', function(t) {
23+
test('RECONNECT TEST', function(t) {
2424

2525
server.on('open', function(socket) {
2626
if (socketServer === undefined) {
@@ -33,9 +33,6 @@ test('CONNECT TEST', function(t) {
3333
tokenServer = node.token;
3434
t.equal(node.socket, socketServer, '❌ connect');
3535
});
36-
server.on('message', function(node, message){
37-
console.log( '❌ message `'+message+'`' );
38-
});
3936
server.on('close', function(socket){
4037
t.equal(socket, socketServer, '❌ close');
4138
});
@@ -57,35 +54,20 @@ test('CONNECT TEST', function(t) {
5754
setTimeout(function(){
5855
console.log( 'reconnecting...' );
5956
nodeClient.reconnect();
57+
t.equal(socket, socketClient, '✅ close');
6058
},500);
61-
t.equal(socket, socketClient, '✅ close');
6259
});
6360
nodeClient.on('reconnect', function(oldSocket) {
6461
t.equal(oldSocket, socketClient, '✅ reconnect');
62+
t.end();
6563
});
66-
// nodeClient.on('message', function(message){
67-
// console.log( '✅ message `'+message+'`' );
68-
// });
6964
});
7065

7166

72-
// Sending messages before is connected
73-
// nodeClient.send('Before');
67+
7468
// Disconnecting
7569
setTimeout(function(){
7670
console.log( 'closing...' );
7771
nodeClient.socket.close();
7872
}, 1000)
7973

80-
function sends() {
81-
var msg=1;
82-
var interval = setInterval(function(){
83-
// nodeServer.send(msg);
84-
nodeClient.send(msg);
85-
msg+=1;
86-
if (msg>25)
87-
clearInterval(interval);
88-
},100);
89-
}
90-
sends();
91-
nodeClient.send('0');

0 commit comments

Comments
 (0)