Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F101473664
socket.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Feb 10, 19:26
Size
1 KB
Mime Type
text/x-java
Expires
Wed, Feb 12, 19:26 (2 d)
Engine
blob
Format
Raw Data
Handle
24158562
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
socket.js
View Options
/* global __webpack_dev_server_client__ */
import
WebSocketClient
from
"./clients/WebSocketClient.js"
;
import
{
log
}
from
"./utils/log.js"
;
// this WebsocketClient is here as a default fallback, in case the client is not injected
/* eslint-disable camelcase */
var
Client
=
// eslint-disable-next-line no-nested-ternary
typeof
__webpack_dev_server_client__
!==
"undefined"
?
typeof
__webpack_dev_server_client__
.
default
!==
"undefined"
?
__webpack_dev_server_client__
.
default
:
__webpack_dev_server_client__
:
WebSocketClient
;
/* eslint-enable camelcase */
var
retries
=
0
;
var
maxRetries
=
10
;
// Initialized client is exported so external consumers can utilize the same instance
// It is mutable to enforce singleton
// eslint-disable-next-line import/no-mutable-exports
export
var
client
=
null
;
/**
* @param {string} url
* @param {{ [handler: string]: (data?: any, params?: any) => any }} handlers
* @param {number} [reconnect]
*/
var
socket
=
function
initSocket
(
url
,
handlers
,
reconnect
)
{
client
=
new
Client
(
url
);
client
.
onOpen
(
function
()
{
retries
=
0
;
if
(
typeof
reconnect
!==
"undefined"
)
{
maxRetries
=
reconnect
;
}
});
client
.
onClose
(
function
()
{
if
(
retries
===
0
)
{
handlers
.
close
();
}
// Try to reconnect.
client
=
null
;
// After 10 retries stop trying, to prevent logspam.
if
(
retries
<
maxRetries
)
{
// Exponentially increase timeout to reconnect.
// Respectfully copied from the package `got`.
// eslint-disable-next-line no-restricted-properties
var
retryInMs
=
1000
*
Math
.
pow
(
2
,
retries
)
+
Math
.
random
()
*
100
;
retries
+=
1
;
log
.
info
(
"Trying to reconnect..."
);
setTimeout
(
function
()
{
socket
(
url
,
handlers
,
reconnect
);
},
retryInMs
);
}
});
client
.
onMessage
(
/**
* @param {any} data
*/
function
(
data
)
{
var
message
=
JSON
.
parse
(
data
);
if
(
handlers
[
message
.
type
])
{
handlers
[
message
.
type
](
message
.
data
,
message
.
params
);
}
});
};
export
default
socket
;
Event Timeline
Log In to Comment