Skip to content

Commit c3e3dbf

Browse files
committed
Test protocol_reconnect passed
1 parent a1d2a56 commit c3e3dbf

File tree

1 file changed

+57
-37
lines changed

1 file changed

+57
-37
lines changed

src/env/browser/websocket.js

Lines changed: 57 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -20,64 +20,83 @@ function websocket(dop, node, options) {
2020

2121
// We use this function as alias to store messages when connection is not OPEN
2222
function send(message) {
23-
(socket.readyState === socket.constructor.OPEN) ? socket.send(message) : send_queue.push(message);
23+
(socket.readyState === socket.constructor.OPEN && node.readyState === dop.CONS.CONNECT) ?
24+
socket.send(message)
25+
:
26+
console.log( 'save', message );
2427
}
28+
29+
// This function emit all the queue messages
2530
function sendQueue(message) {
2631
while (send_queue.length>0)
27-
send(send_queue.shift());
32+
socket.send(send_queue.shift());
2833
}
2934

30-
node.readyState = dop.CONS.CLOSE;
31-
node.reconnect = function() {
32-
oldSocket = node.socket;
33-
node.socket = node.options.transport.apply(node, args);
34-
node.readyState = dop.CONS.RECONNECT;
35-
};
36-
node.once(dop.CONS.CONNECT, function() {
37-
node.readyState = dop.CONS.CONNECT;
38-
dop.core.emitConnect(node);
39-
sendQueue();
40-
});
41-
node.on(dop.CONS.SEND, function(message) {
42-
send(message);
43-
});
44-
node.on(dop.CONS.DISCONNECT, function() {
45-
node.readyState = dop.CONS.CLOSE;
46-
socket.close();
47-
});
48-
49-
50-
51-
socket.addEventListener('open', function() {
35+
function onopen() {
5236
// Reconnect
5337
if (node.readyState === dop.CONS.RECONNECT) {
54-
send(node.tokenServer);
55-
sendQueue();
38+
socket.send(node.tokenServer);
5639
}
5740
// Connect
5841
else {
59-
send(); // Empty means we want to get connected
42+
socket.send(''); // Empty means we want to get connected
6043
node.readyState = dop.CONS.OPEN;
6144
}
6245
dop.core.emitOpen(node, socket, options.transport);
63-
});
64-
socket.addEventListener('message', function(message) {
65-
// Reconnecting
66-
if (message.data===node.tokenServer && node.readyState===dop.CONS.RECONNECT) {
67-
node.readyState = dop.CONS.CONNECT;
68-
dop.core.emitReconnectClient(node, oldSocket);
69-
}
70-
else
46+
}
47+
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
7155
dop.core.emitMessage(node, socket, message.data, message);
72-
});
73-
socket.addEventListener('close', function() {
56+
}
57+
function onclose() {
7458
dop.core.emitClose(node, socket);
59+
}
60+
61+
62+
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+
// };
70+
node.on(dop.CONS.CONNECT, function() {
71+
node.readyState = dop.CONS.CONNECT;
72+
dop.core.emitConnect(node);
73+
});
74+
node.on(dop.CONS.SEND, function(message) {
75+
send(message);
76+
});
77+
node.on(dop.CONS.DISCONNECT, function() {
78+
node.readyState = dop.CONS.CLOSE;
79+
socket.close();
7580
});
7681

82+
addListeners(socket, onopen, onmessage, onclose);
7783

7884
return socket;
7985
};
8086

87+
function addListeners(socket, onopen, onmessage, onclose) {
88+
socket.addEventListener('open', onopen);
89+
socket.addEventListener('message', onmessage);
90+
socket.addEventListener('close', onclose);
91+
}
92+
function removeListeners(socket, onopen, onmessage, onclose) {
93+
socket.removeEventListener('open', onopen);
94+
socket.removeEventListener('message', onmessage);
95+
socket.removeEventListener('close', onclose);
96+
}
97+
98+
99+
// UMD
81100
if (typeof dop=='undefined' && typeof module == 'object' && module.exports)
82101
module.exports = websocket;
83102
else {
@@ -88,4 +107,5 @@ else {
88107
root.dopTransportsConnectWebsocket = websocket;
89108
}
90109

110+
91111
})(this);

0 commit comments

Comments
 (0)