40 lines
899 B
JavaScript
40 lines
899 B
JavaScript
export default function createWebSocket(url, token, onMessageCallback) {
|
||
let socket;
|
||
let retries = 0;
|
||
const maxRetries = 5
|
||
let messageQueue = [];
|
||
|
||
function connect() {
|
||
|
||
socket = new WebSocket(url, [token]);
|
||
|
||
socket.addEventListener('message', (event) => {
|
||
const jsonData = JSON.parse(event.data)
|
||
onMessageCallback(jsonData)
|
||
});
|
||
|
||
socket.onopen = () => {
|
||
console.log('WebSocket is open now.')
|
||
console.log(socket)
|
||
retries = 0 //сброс попыток
|
||
|
||
while (messageQueue.length > 0) {
|
||
socket.send(messageQueue.shift());
|
||
}
|
||
};
|
||
|
||
socket.onclose = (event) => {
|
||
console.log('WebSocket is closed now.', event)
|
||
};
|
||
|
||
socket.onerror = (error) => {
|
||
console.error('WebSocket error observed:', error)
|
||
};
|
||
|
||
|
||
}
|
||
|
||
connect()
|
||
|
||
return socket
|
||
}
|