рдПрдХ рд╕реЙрдХреЗрдЯ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рд╕реЙрдХреЗрдЯ.io рдорд╢реАрдирд░реА рдХреЗ рдЕрдВрджрд░ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрд╛ рдЧрдпрд╛ (рд▓реЗрдХрд┐рди рдХрд╛рдлреА рд▓рдЧрд╛рддрд╛рд░) рдПрдХ рдЕрдкрд╡рд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ backo2/index.js
рд▓рд╛рдЗрди 83. рд╡рд╣ рддреНрд░реБрдЯрд┐ рд╣реИ:
WebSocket is already in CLOSING or CLOSED state.
рдореЗрд░реЗ рдкрд╛рд╕ https рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ (рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ) рд╕реЗ рдЬреБрдбрд╝реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рджреЛ рдЯреИрдм рдЦреБрд▓реЗ рд╣реИрдВред рджреЛрдиреЛрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдмреЗрдХрд╛рд░ рдмреИрдареЗ рд╣реИрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдпрд╛ рд╕рд░реНрд╡рд░ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ (рд╕рд┐рд╡рд╛рдп рдЬреЛ рдХреБрдЫ рднреА рдЬреАрд╡рд┐рдд рдкрд┐рдВрдЧреНрд╕ socket.io рдХрд░ рд░рд╣рд╛ рд╣реИ)ред рд╡реЗ рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдЪреИрдирд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ (рд╕рд░реНрд╡рд░ рдкрд░ join(..)
рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред рдирд╣реАрдВ рддреЛ рдФрд░ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВред
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ:
var httpsServer = https.createServer(..);
var io = require("socket.io")(httpsServer);
io.on("connection",onSocketConnection);
рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдореЗрдВ:
socket = io();
socket.on("connect",function(){
console.log("socket connected");
});
socket.on("disconnect",function(){
console.log("socket disconnected");
});
рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдбрд┐рд╕реНрдХрдиреЗрдХреНрд╢рди рдФрд░ рд░реАрдХрдиреЗрдХреНрд╢рди рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХреЗ рдЧрдП рдирдХрд▓реА рдЬреЗрдПрд╕ рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИред
рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕:
index.js:83 WebSocket is already in CLOSING or CLOSED state.
(anonymous) @ index.js:83
e.encodePacket @ index.js:83
(anonymous) @ index.js:83
r.write @ index.js:83
r.send @ index.js:83
r.flush @ index.js:83
r.sendPacket @ index.js:83
r.ping @ index.js:83
(anonymous) @ index.js:83
setTimeout (async)
r.setPing @ index.js:83
r.onPacket @ index.js:83
(anonymous) @ index.js:83
r.emit @ index.js:83
r.onPacket @ index.js:83
r.onData @ index.js:83
ws.onmessage @ index.js:83
рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдФрд░ рдХреЛрдб рд╕рд╣реА рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдореЗрд░реЗ рд▓рд┐рдП рдХреНрд░реЛрдо рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдореЛрдЬрд╝рд┐рд▓рд╛ рд╕рд╛рдл рд╣реИред рдХреНрд░реЛрдо рдореЗрдВ, рдпрд╣ рддреНрд░реБрдЯрд┐ рдмрд╛рд░-рдмрд╛рд░ рдмрд╛рд░рд┐рд╢ рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдореМрдЬреВрдж рд╕рднреА рдЪреИрдЯ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░ рд░рд╣реА рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА
socket.on('disconnect', () =>{
socket.disconnect();
});
рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд░реЗрдкреЛ https://github.com/antoniab123456/Chat_app
рдпрд╣рд╛рдБ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрд╕ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ, рдлрд┐рд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕рд╛рдордиреЗ рдЖрддреА рд╣реИрдВред
рдореИрдВрдиреЗ рдХреНрд░реЛрдо рдФрд░ рдореИрдХ рдУрдПрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛
рд╣рд╛рдБ рджреЛрд╕реНрддреЛрдВ, рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдПрдХ рдФрд░ рдкрдВрдХреНрддрд┐ рдЪрд╛рд╣рд┐рдП?
рдореБрдЭреЗ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдФрд░ рдХреНрд░реЛрдо рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ
рдореИрдХ рдУрдПрд╕ 10.13.5
рдХреНрд░реЛрдо рд╕рдВрд╕реНрдХрд░рдг 67.0.0.3396.87 (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмрд┐рд▓реНрдб) (64-рдмрд┐рдЯ)
рдиреЛрдб: 10.3.0
рдПрдХреНрд╕рдкреНрд░реЗрд╕: тАЛтАЛ4.16.3
рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ: 2.1.1
рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред
рддреНрд░реБрдЯрд┐ рд╡рд┐рд╡рд░рдг рдиреАрдЪреЗ:
index.js:83 WebSocket is already in CLOSING or CLOSED state.
(anonymous) | @ | index.js:83
┬а | e.encodePacket | @ | index.js:83
┬а | (anonymous) | @ | index.js:83
┬а | r.write | @ | index.js:83
┬а | r.send | @ | index.js:83
┬а | r.flush | @ | index.js:83
┬а | r.sendPacket | @ | index.js:83
┬а | r.ping | @ | index.js:83
┬а | (anonymous) | @ | index.js:83
┬а | setTimeout (async) | ┬а | ┬а
┬а | r.setPing | @ | index.js:83
┬а | r.onPacket | @ | index.js:83
┬а | (anonymous) | @ | index.js:83
┬а | r.emit | @ | index.js:83
┬а | r.onPacket | @ | index.js:83
┬а | r.onData | @ | index.js:83
┬а | ws.onmessage | @ | index.js:83
рдЬрдм рдореИрдВ index.js:83 рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдореБрдЭреЗ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ:
/**
* Expose `Backoff`.
*/
module.exports = Backoff;
/**
* Initialize backoff timer with `opts`.
*
* - `min` initial timeout in milliseconds [100]
* - `max` max timeout [10000]
* - `jitter` [0]
* - `factor` [2]
*
* <strong i="16">@param</strong> {Object} opts
* <strong i="17">@api</strong> public
*/
function Backoff(opts) {
opts = opts || {};
this.ms = opts.min || 100;
this.max = opts.max || 10000;
this.factor = opts.factor || 2;
this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;
this.attempts = 0;
}
/**
* Return the backoff duration.
*
* <strong i="18">@return</strong> {Number}
* <strong i="19">@api</strong> public
*/
Backoff.prototype.duration = function(){
var ms = this.ms * Math.pow(this.factor, this.attempts++);
if (this.jitter) {
var rand = Math.random();
var deviation = Math.floor(rand * this.jitter * ms);
ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;
}
return Math.min(ms, this.max) | 0;
};
/**
* Reset the number of attempts.
*
* <strong i="20">@api</strong> public
*/
Backoff.prototype.reset = function(){
this.attempts = 0;
};
/**
* Set the minimum duration
*
* <strong i="21">@api</strong> public
*/
Backoff.prototype.setMin = function(min){
this.ms = min;
};
/**
* Set the maximum duration
*
* <strong i="22">@api</strong> public
*/
Backoff.prototype.setMax = function(max){
this.max = max;
};
/**
* Set the jitter
*
* <strong i="23">@api</strong> public
*/
Backoff.prototype.setJitter = function(jitter){
this.jitter = jitter;
};
//////////////////
// WEBPACK FOOTER
// ./~/backo2/index.js
// module id = 41
// module chunks = 0
рд▓рд╛рдЗрди 83 рд╣реИ:
this.jitter = jitter;
рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, backo2.js рдФрд░ рд▓рд╛рдЗрди 83 рдореЗрдВред рдпрд╣рд╛рдБ рдореЗрд░реА рддреНрд░реБрдЯрд┐ рд╣реИ:
index.js:83 Uncaught TypeError: 'FileReader' рдкрд░ 'readAsArrayBuffer' рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓: рдкреИрд░рд╛рдореАрдЯрд░ 1 'рдмреНрд▓реЙрдм' рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╣реАрдВ рд╣реИред
n рдкрд░ (index.js:83)
n рдкрд░ (index.js:83)
n рдкрд░ (index.js:83)
n рдкрд░ (index.js:83)
n рдкрд░ (index.js:83)
n рдкрд░ (index.js:83)
Object.e.removeBlobs рдкрд░ (index.js:83)
рдПрд╕ рдкрд░ (index.js:83)
r.encode рдкрд░ (index.js:83)
r.packet рдкрд░ (index.js:83)
рдФрд░ рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рд╡реЗ рд╕рднреА 83 рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣реИрдВ, рдЬреЛ this.jitter = jitter;
рд╣реИ
рдпрд╣ рдореБрдЭреЗ рдЗрддрдирд╛ рдкрд░реЗрд╢рд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Google рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИ? @antoniab123456 рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдЪреИрдЯ рдРрдк рдХреЛ рдареАрдХ рдХрд░ рдкрд╛рдП рддрд╛рдХрд┐ рдпрд╣ рдЖрдкрдХреА рдЪреИрдЯ рдХреА рдирдХрд▓ рди рдХрд░реЗ? рдпрд╣ рдореЗрд░реЗ рд╕рд╛рде рд╡рд╣реА рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╕реЗрдЯ рдЕрдк
рдУрдПрд╕: рдореИрдХ рдУрдПрд╕рдПрдХреНрд╕
рдмреНрд░рд╛рдЙрдЬрд╝рд░: рдХреНрд░реЛрдо 67.0.3396.99 (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмрд┐рд▓реНрдб) (64-рдмрд┐рдЯ)
рдиреЛрдб v10.5.0
Socket.io v2.1.1
рдореБрдЭреЗ рдХреНрд░реЛрдо рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рдЯреАрдХ рд╕рдорд╕реНрдпрд╛ @getify рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рдордХрд╛рдЬ рдорд┐рд▓рд╛ рд╣реИ?
рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдХреГрдкрдпрд╛ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реИ?
рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд╕реЗрдЯ рдЕрдк
рдУрдПрд╕: рдореИрдХ рдУрдПрд╕рдПрдХреНрд╕
рдмреНрд░рд╛рдЙрдЬрд╝рд░: рдХреНрд░реЛрдо 67.0.3396.99 (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмрд┐рд▓реНрдб) (64-рдмрд┐рдЯ), рдиреЛрдб 9.6.1
рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рд╕рдВрд╕реНрдХрд░рдг: 2.1.1
@ 19smitgr idk 'рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЪреИрдЯреНрд╕' рд╕реЗ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдЬреЛ рд╡рд┐рд╖рдп рд╕реЗ рд╣рдЯрдХрд░ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рд╕рд╛рд░рдг рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм 'рдПрдХ рд╣реА рд╕реНрдХреНрд░реАрди рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдВрджреЗрд╢' рд╣реИред
@ kino2007 рдореИрдВ рдЪреИрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдЧреЗрдо рдХреЗ рд╕рд╛рде websockets рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ websocket рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЧрдпрд╛ рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛ рдЧрдпрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рд░ рдХреЛрдИ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдпрд╣ рдЪрд░рд┐рддреНрд░ рдХреЛ рдПрдХ рдирдИ рд╕реЙрдХреЗрдЯ рдЖрдИрдбреА рджреЗрдЧрд╛, рдФрд░ рдкреБрд░рд╛рдиреЗ рд╕реЙрдХреЗрдЯ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдкреБрд░рд╛рдиреЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ "рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ" рд╕рдВрджреЗрд╢ рдХреЗ рдмрдЬрд╛рдп "рдкрд░рд┐рд╡рд╣рди рдмрдВрдж" рд╕рдВрджреЗрд╢ рдорд┐рд▓ рд░рд╣рд╛ рдерд╛ред
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рднрд▓реЗ рд╣реА рдореБрдЭреЗ "рдкрд░рд┐рд╡рд╣рди рдмрдВрдж" рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ, рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЕрдкрдиреА рд╕реВрдЪреА рд╕реЗ рдЙрд╕реА рддрд░рд╣ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдХрд┐ рдореБрдЭреЗ "рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ" рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛ред
рдпрд╣рд╛рдБ рд╡рд╣реА рддреНрд░реБрдЯрд┐
рдПрдХ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ backo2 рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
рддрдм рдореИрдВрдиреЗ socket.io рдХреЗ рджреЗрд╡ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ Socket.prototype.onevent рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рддрдп рдХрд┐рдпрд╛:
рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛:
socket.on('ping', alert);
рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛:
socket.on('ping', msg => {
alert(msg);
});
рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛!
рдореБрдЭреЗ рднреА рдпрд╣реА рддрдХрд▓реАрдлрд╝ рд╣реИред рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?
рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред
рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдФрд░ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ-рдХреНрд▓рд╛рдЗрдВрдЯ: "^ 2.1.1"
рдореИрдХ рдУрдПрд╕
Google Chrome рдЕрдк рдЯреВ рдбреЗрдЯ рд╣реИ
рд╕рдВрд╕реНрдХрд░рдг 68.0.3440.106 (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмрд┐рд▓реНрдб) (64-рдмрд┐рдЯ)
рдореБрдЭреЗ рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рд╕рд╛рде рд╣реА, рдпрд╣ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬреЗ рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдореИрдХреЛрдЬрд╝: 10.13.6
Socket.io: "^ 2.1.1"
рдХреНрд░реЛрдо: 68.0.3440.106
@abhyuditjain рдЖрдк рдПрдХрд╛рдзрд┐рдХ рд╢реНрд░реЛрддрд╛ рдкрдВрдЬреАрдХрд░рдг рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ socket.removeAllListeners();
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯрд┐рдВрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддрдд рдореБрджреНрджрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╣рд▓ рдирд╣реАрдВ рдирд┐рдХрд▓рд╛ рд╣реИред рдХрд┐рд╕реА рд╕реЗ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?
@vkotu рдЕрдЧрд░ рдореИрдВ рд╕рднреА рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ, рддреЛ рд╕реЙрдХреЗрдЯ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЙрдкрд╛рдп?
рдмрд╕ websocket- рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
https://codeburst.io/why-you-don-t-need-socket-io-6848f1c871cd
https://medium.com/@martin.sikora/node -js-websocket-simple-chat-tutorial-2def3a841b61
https://www.npmjs.com/package/websocket
рдПрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдирд╣реАрдВ, рдХреЗрд╡рд▓ рдорджрдж рдХрд░рдирд╛, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд▓реЗрддреЗ рд╣реИрдВ: рдбреАрдбреАрдбреА рдпрд╣ рдорд╣реАрдиреЛрдВ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ 05.09.2018, 13:15, "рдЕрднреНрдпреБрджрд┐рдд рдЬреИрди" рдЕрдзрд┐рд╕реВрдЪрдирд╛рдПрдВ @github.com:@antoniab123456 рдпрд╣ рдкреГрд╖реНрда рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдореБрджреНрджреЛрдВ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рднрдВрдбрд╛рд░ред рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рд╡рд┐рдЬреНрдЮрд╛рдкрди рди рдХрд░реЗрдВред
тАФрдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред
- рд╕рд╛рднрд╛рд░, рдПрдВрдЯреЛрдирд┐рдпрд╛ рдмреА. рдХрд╕реНрдЯрдорд░ рдХреЗрдпрд░ рд╕реНрдкреЗрд╢рд▓рд┐рд╕реНрдЯ @amoCRM Global
рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ 2.0.3
"рдареАрдХ" рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
@cozuya рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ рддреЛ рдЖрдкрдХреЛ рдмрддрд╛рдПрдВрдЧреЗ!
рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ
2.0.3
"рдареАрдХ" рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЪрд╛рд▓рдмрд╛рдЬреА рдХрд░рддрд╛ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред 4 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВред рджреЗрдЦрддреЗ рд╣реИрдВ рдХрдм рддрдХ рд░рд╣рддрд╛ рд╣реИ!
@cozuya рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
2.1.1 . рдореЗрдВ рд╡рд╣реА рддреНрд░реБрдЯрд┐
рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ 2.0.3 "рддрдп" рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ред
2.0.3 рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдзрдиреНрдпрд╡рд╛рдж @cozuya
2.1.1 рдЕрднреА рднреА рдЙрдиреНрд╣реАрдВ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдкрд┐рдВрдЧ рдФрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛
рдХреНрд░реЛрдо рдореЗрдВ v2.1.1 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ (рд▓рдЧрднрдЧ 20-30 рдорд┐рдирдЯ)
2.1.1 рдЕрднреА рднреА рдЙрдиреНрд╣реАрдВ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдкрд┐рдВрдЧ рдФрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛
рд╡реА 2.0.3 . рдкрд░ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░реЗрдВ
рдореИрдВрдиреЗ 2.0.4 рдХреЗ рд╕рд╛рде socket.io рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рджрд┐рдЦрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд▓рд┐рдП 60000 (v2.0.4) рд╕реЗ 5000 (v2.1.1) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ рд╣реИред
рдЕрдЧрд░ рдореИрдВрдиреЗ рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ 10000 рдХреА рддрд░рд╣ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЯреИрдм рдореЗрдВ рдХреБрдЫ рдереНрд░реЙрдЯрд▓ рд╣реЛрдЧрд╛ред
рдореБрдЭреЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рдереАред рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛?
рдореБрдЭреЗ рднреА рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдпрд╣ рдХреНрд░реЛрдо рдФрд░ рд╕рдлрд╛рд░реА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛
рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред OSX рдХреЗ рддрд╣рдд рдХреНрд░реЛрдоред
рдореИрдВ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ socket.removeAllListeners();
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди socket.off("whatever")
рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрд░реЗ рд╕рднреА рдЧреИрд░-рддрдХрдиреАрдХреА рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ "disconnect"
рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИрдВ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИрдВред
рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдзреНрдпрд╛рди рдХреЗ рджреЗрдЦрдирд╛ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИред рдЫрд╣ рдорд╣реАрдиреЗ рдФрд░ рдЧрд┐рдирддреА рд╣реЛ рд░рд╣реА рд╣реИред
рддреЛ рдкреБрди: рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдкрд┐рдВрдЧ рдЯрд╛рдЗрдо рдЖрдЙрдЯ рд╣реИред рдбрд╛рдЙрдирдЧреНрд░реЗрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред
рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╡реНрдпрд╛рдкрдХ рдХреЛрдб рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдлрд┐рд░ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛!
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓реЗрдЧрд╛!
рдореЗрд░реЗ рдЖрдИрдлреЛрди рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛
28 рдирд╡рдВрдмрд░, 2018 рдХреЛ рджреЛрдкрд╣рд░ 2:14 рдмрдЬреЗ, рд╣реЙрд░реНрд╕рдмреИрдбреЙрд░реНрдЯреАрдЬрд╝ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред OSX рдХреЗ рддрд╣рдд рдХреНрд░реЛрдоред
рдореИрдВ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣рдЯрд╛рдПрдВ рдСрд▓ рд▓рд┐рд╕реНрдЯрд░реНрд╕ (); рд▓реЗрдХрд┐рди "рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ" рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрд░реЗ рд╕рднреА рдЧреИрд░-рддрдХрдиреАрдХреА рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реЙрдХреЗрдЯ.рдСрдл ("рдЬреЛ рдХреБрдЫ рднреА")ред рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИрдВ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИрдВред
рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдзреНрдпрд╛рди рдХреЗ рджреЗрдЦрдирд╛ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИред рдЫрд╣ рдорд╣реАрдиреЗ рдФрд░ рдЧрд┐рдирддреА рд╣реЛ рд░рд╣реА рд╣реИред
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред
рд╡рд╣реА рдореБрджреНрджрд╛ .... рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдЕрднреА рддрдХ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧрдирд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ ping timeout
рдХреЗ рдХрд╛рд░рдг рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдмрд╛рдд рдкрд░ рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдиреЗ рдкрд┐рдВрдЧреНрд╕ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред
io.on('connection', function(socket) {
socket.on('disconnect', function(reason) {
console.log(`Socket disconnected for: ${reason}`);
}
});
https://socket.io/docs/server-api/#Event -%E2%80%98disconnect%E2%80%99 рдореЗрдВ рдбрд┐рд╕реНрдХрдиреЗрдХреНрд╢рди рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред
рдЕрдзрд┐рдХ рдбрд┐рдмрдЧрд┐рдВрдЧ:
рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпрд╣ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ ping
рдШрдЯрдирд╛ рдкрд┐рдЫрд▓реЗ рд╕реЗ +30s
рд╣реИред рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рджреЗрдЦрд╛, рддреЛ рдпрд╣ 30s+
рдерд╛ рдЬреЛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдЕрдВрддрд░рд╛рд▓ + рдкрд┐рдВрдЧ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реИред +26s
, +28s
, рдФрд░ +29s
рдмрд┐рдирд╛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХреЗ рджрд┐рдЦрд╛рдИ рджрд┐рдПред
рдЬрдм рд╕рдлрд╝рд╛рд░реА рд╕реЗ рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕рдлрд╝рд╛рд░реА рдкреНрд░рддреНрдпреЗрдХ 25s
рдХреЛ рдкрд┐рдВрдЧ рдХрд░рдиреЗ рдкрд░ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рдереА рдФрд░ рдЙрд╕реЗ рдХреЛрдИ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рдерд╛ред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд▓рд┐рдП 60000 (v2.0.4) рд╕реЗ 5000 (v2.1.0+) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдЬреЛ рдХреНрд░реЛрдо рдЬреИрд╕реЗ рдХреБрдЫ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред
рдирд╡реАрдирддрдо v2.2.0 рд╕рд╣рд┐рдд v2.1.0+ рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрдбрд╝реЗ рдорд╛рди рдкрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реИ:
const http = require('http');
const server = http.createServer();
const io = require('socket.io')(server, {
pingTimeout: 60000,
});
рдпрд╛
const io = require('socket.io')();
const http = require('http');
const server = http.createServer();
io.attach(server, {
pingTimeout: 60000,
});
5000 рдХреНрдпреЛрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ? рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рджреЗрд╡ рд╕рд░реНрд╡рд░ рдкрд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╡рд┐рд▓рдВрдмрддрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕ рд╕реАрдорд╛ рдХреЗ рдиреАрдЪреЗ рд╣реИред 5000ms рдПрдХ рдЙрдЪрд┐рдд рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдмрджрдмреВ рдЖ рд░рд╣реА рд╣реИ рдХрд┐ рдкрд┐рдВрдЧ-рдкреЛрдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╣реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Thx @getify (рдореИрдВ socket.io v2.2.0 рдкрд░ рд╣реВрдВ)
рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдЬреЛ рдЗрд╕рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реИ - рдореБрдЭреЗ рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдорджрдж рдирд╣реАрдВ рдХрд░рддреА :-) рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рд╕рдорд░реНрдерди рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рдЕрдВрдЧреВрдареЗ рдХреЗ рд╕рд╛рде рд╡реЛрдЯ рджреЗрдВ
pingTimeout
рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП Thx @omardoma рдФрд░ рдореИрдВ @LunarMist рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ ping/pong
рдЗрд╡реЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдореИрдВрдиреЗ рдХреНрд░реЛрдо, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ рд╕рдлрд╛рд░реА (рд╕рднреА рдореИрдХреЛрдЬрд╝ рдкрд░) рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред
рдХреНрд░реЛрдо рдФрд░ рд╕рдлрд╛рд░реА рджреЛрдиреЛрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде ws рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдереНрд░реЙрдЯрд▓ рдХрд░рддреЗ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ:
рдореИрдВрдиреЗ рдЗрди рд╕рднреА 3 рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдШрдВрдЯреЛрдВ рддрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, pingTimeout
рдФрд░ pingInterval
рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рдорд┐рд▓рд╛:
pingTimeout
>= 30000
рдПрдордПрд╕ . рд╕реЗрдЯ рдХрд░рдирд╛pingInterval
<= 10000
рдПрдордПрд╕ . рд╕реЗрдЯ рдХрд░рдирд╛рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ pingTimeout = 30000
рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ pingInterval
25000
ms рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ 10s рддрдХ рдкрд┐рдВрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдЖрд╡реГрддреНрддрд┐ рдмрдврд╝рд╛рдирд╛ _at scale_ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмрд╛рддреВрдиреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрдпрд╛ @darrachequesne рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд░реЗрдкреЛ рд╕рджрд╕реНрдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ pingTimeout
рдХреЛ 30000
5000
ms рдХреЗ рдореМрдЬреВрджрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗ рдмрдврд╝рд╛рдХрд░ pingTimeout рдХрд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реИрдВ рдЬрд┐рд╕реЗ v2.1 рдореЗрдВ 60000
рд╕реЗ рдмрджрд▓рд╛ рдЧрдпрд╛ рдерд╛
рдЖрдкрдХреА рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдирд╛ рднреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рдХреЛ рдкрд┐рдВрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ рди рдХрд┐ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ pingTimeout
рдХреЛ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдареАрдХ рд╣реЛ рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рдо v3 рдореЗрдВ рд╕рд░реНрд╡рд░ -> рдХреНрд▓рд╛рдЗрдВрдЯ (рд╡рд░реНрддрдорд╛рди рдХреНрд▓рд╛рдЗрдВрдЯ -> рд╕рд░реНрд╡рд░ рдХреЗ рдмрдЬрд╛рдп) рд╕реЗ рдкрд┐рдВрдЧ/рдкреЛрдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдВрдб рдкрд░ рдмрд╕ рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
_socket.on('рдкрд┐рдВрдЧ', () => {
рд╕реЙрдХреЗрдЯ.рдПрдорд┐рдЯ (рдбреЗрдЯрд╛);
});_
рдзрдиреНрдпрд╡рд╛рдж @ рдХреНрд░реЛрдмрд┐рдиреНрд╕рди42! рдкрд┐рдВрдЧ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЙрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЪрд┐рдВрддрд╛рдПрдВ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕реА рднреА рдХреНрд╖рдг рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдЦреЛ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдореЗрдВ 30 рд╕реЗрдХрдВрдб рддрдХ рдХрд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛ рдФрд░ рдХреБрдЫ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреИрдЯ рдРрдк рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд┐рдВрдЧ рдЕрдВрддрд░рд╛рд▓ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рдХрд╛рдо рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдХрд╣рд╛, рд▓рд╛рдЧрдд рдЕрдзрд┐рдХ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ?
рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рддрдп рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдиреАрдЪреЗ рд╣реИрдВ:
"socket.io": "2.2.0",
"socket.io-adapter": "~1.1.1",
"socket.io-client": "2.2.0",
"socket.io-parser": "~3.2.0",
"socket.io-redis": "^5.2.0",
рдореЗрд░рд╛ рдХреЛрдб:
рд╕рд░реНрд╡рд░, {
рдкрде: '/socket.io',
рд╕реЗрд╡рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ: рд╕рдЪ,
// рдиреАрдЪреЗ рдЗрдВрдЬрди рд╣реИрдВред рдЖрдИрдУ рд╡рд┐рдХрд▓реНрдк
рдкрд┐рдВрдЧрдЗрдВрдЯрд░рд╡рд▓: 40000,
рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ: 25000,
рдЕрдкрдЧреНрд░реЗрдбрдЯрд╛рдЗрдордЖрдЙрдЯ: 30000, // рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 10000ms рд╣реИ, рдЗрд╕реЗ 20k рдпрд╛ рдЕрдзрд┐рдХ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
рдПрдЬреЗрдВрдЯ: рдЭреВрдард╛,
рдХреБрдХреА: рдЭреВрдард╛,
рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЕрдирдзрд┐рдХреГрдд: рдЭреВрдард╛,
рдкреБрди: рд╕рдВрдпреЛрдЬрдирд╡рд┐рд▓рдВрдм: 1000,
рдкреБрди: рдХрдиреЗрдХреНрд╢рдиDelayMax: 5000
}
рдореЗрд░реЗ рдореБрд╡рдХреНрдХрд┐рд▓:
рдкреБрди: рдХрдиреЗрдХреНрд╢рди: рд╕рдЪ,
рдкреБрди: рд╕рдВрдпреЛрдЬрдирд╡рд┐рд▓рдВрдм: 1000,
рдкреБрди: рдХрдиреЗрдХреНрд╢рдиDelayMax: 5000,
рдкреБрди: рд╕рдВрдпреЛрдЬрди рдкреНрд░рдпрд╛рд╕: рдЕрдирдВрдд,
// рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдХреЗ рд╡рд┐рдХрд▓реНрдк
рдкрд░рд┐рд╡рд╣рди: ["рдорддрджрд╛рди", "рд╡реЗрдмрд╕реЛрдХреЗрдЯ"],
рд╕реБрд░рдХреНрд╖рд┐рдд: рд╕рдЪ,
рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЕрдирдзрд┐рдХреГрдд: рдЭреВрдард╛,
рдмрд▓рдирдИ: рд╕рдЪ,
рд╕рдордп рд╕рдорд╛рдкреНрдд: 60000
рд╣реИрд▓реЛ рдлреИрдЬрд╛рди,
рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ -
** рдореИрдВрдиреЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рд╕рдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ ..
рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб - рдХреЛрдб:
рдХреЙрдиреНрд╕реНрдЯ рд╕рд░реНрд╡рд░ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('http')ред createServer ();
const io = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рд╕реЙрдХреЗрдЯ.io') (рд╕рд░реНрд╡рд░, {
// рдкрде: '/socket.io',
рд╕реЗрд╡рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ: рд╕рдЪ,
pingInterval: 40000,
pingTimeout: 25000,
upgradeTimeout: 21000, // default value is 10000ms, try changing it to 20k or more
agent: false,
cookie: false,
rejectUnauthorized: false,
reconnectionDelay: 1000,
reconnectionDelayMax: 5000
});
io.on ('рдХрдиреЗрдХреНрд╢рди', рдлрд╝рдВрдХреНрд╢рди (рд╕реЙрдХреЗрдЯ) {
рд╕реЙрдХреЗрдЯ.рдПрдорд┐рдЯ ('рд╕реНрд╡рд╛рдЧрдд', {рд╕рдВрджреЗрд╢: 'рд╕реНрд╡рд╛рдЧрдд!', рдЖрдИрдбреА: рд╕реЙрдХреЗрдЯ.рдЖрдИрдбреА});
рд╕реЙрдХреЗрдЯ.рдСрди ('рд╕реБрдиреАрд▓', рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ);
});
рд╕рд░реНрд╡рд░ред рд╕реБрдиреЛ (3000);
рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдХреЛрдб:
var рдХреНрд▓рд╛рдЗрдВрдЯ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ("рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ-рдХреНрд▓рд╛рдЗрдВрдЯ");
рд╡рд░ рд╕реЙрдХреЗрдЯ = рдХреНрд▓рд╛рдЗрдВрдЯ.рдХрдиреЗрдХреНрдЯ ("http://localhost:3000", {
рдкреБрди: рдХрдиреЗрдХреНрд╢рди: рд╕рдЪ,
рдкреБрди: рд╕рдВрдпреЛрдЬрдирд╡рд┐рд▓рдВрдм: 1000,
рдкреБрди: рдХрдиреЗрдХреНрд╢рдиDelayMax: 5000,
рдкреБрди: рд╕рдВрдпреЛрдЬрди рдкреНрд░рдпрд╛рд╕: рдЕрдирдВрдд,
рдкрд░рд┐рд╡рд╣рди: ["рд╡реЗрдмрд╕реЛрдХреЗрдЯ"],
рд╕реБрд░рдХреНрд╖рд┐рдд: рдЭреВрдард╛,
рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЕрдирдзрд┐рдХреГрдд: рдЭреВрдард╛,
рдмрд▓рдирдИ: рд╕рдЪ,
рд╕рдордп рд╕рдорд╛рдкреНрдд: 6000
});
рд╕реЙрдХреЗрдЯ.рдХрдиреЗрдХреНрдЯ ();
рд╕реЙрдХреЗрдЯ.рдПрдорд┐рдЯ ('рд╕реБрдиреАрд▓', {
рдбреЗрдЯрд╛: 'рд╣реИрд▓реЛ'
});
рд╕реЙрдХреЗрдЯ.рдСрди ('рд╕реНрд╡рд╛рдЧрдд', рдлрд╝рдВрдХреНрд╢рди (рдбреЗрдЯрд╛) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдбреЗрдЯрд╛)
рд╕реЙрдХреЗрдЯ.рдПрдорд┐рдЯ ('рд╕реБрдиреАрд▓', {
рдбреЗрдЯрд╛: 'рдлреИрдЬрд╛рди',
рдЖрдИрдбреА: data.id
});
socket.disconnect();
});
рд╕рд╛рджрд░
рд╕реБрдиреАрд▓ рдпрд╛рджрд╡
09-рдордИ-2019 рдХреЛ рд╢рд╛рдо 4:05 рдмрдЬреЗ рдлреИрдЬрд╛рди рдЬрд╛рд╣рд┐рдж рдиреЗ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдкрд░ рд▓рд┐рдЦрд╛:
рдкреБрди: рдХрдиреЗрдХреНрд╢рди: рд╕рдЪ,
рдкреБрди: рд╕рдВрдпреЛрдЬрдирд╡рд┐рд▓рдВрдм: 1000,
рдкреБрди: рдХрдиреЗрдХреНрд╢рдиDelayMax: 5000,
рдкреБрди: рд╕рдВрдпреЛрдЬрди рдкреНрд░рдпрд╛рд╕: рдЕрдирдВрдд,
// рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдХреЗ рд╡рд┐рдХрд▓реНрдк
рдкрд░рд┐рд╡рд╣рди: ["рдорддрджрд╛рди", "рд╡реЗрдмрд╕реЛрдХреЗрдЯ"],
рд╕реБрд░рдХреНрд╖рд┐рдд: рд╕рдЪ,
рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЕрдирдзрд┐рдХреГрдд: рдЭреВрдард╛,
рдмрд▓рдирдИ: рд╕рдЪ,
рд╕рдордп рд╕рдорд╛рдкреНрдд: 60000
рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдареАрдХ рд╣реЛрдиреЗ рддрдХ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдореЛрд░реА рдХреЛ рдЦрд╛рд▓реА рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдЧрд╛ рдФрд░ рдореЗрдореЛрд░реА рдХрд╛ рдЕрддреНрдпрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
defaults write com.apple.Safari IncludeInternalDebugMenu 1
. рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБрдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреНрд░реЛрдо рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА
рдЖрдк рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╡реЗрдмрджреЗрд╡ рдХреЗ рд▓рд┐рдП рд╕рдлрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдореИрдВ
рдЖрдк рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╡реЗрдмрджреЗрд╡ рдХреЗ рд▓рд┐рдП рд╕рдлрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдореИрдВ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рдРрдк рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрд╛рддрд╛рд░ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реИред рдпрд╣ 3.0 рдореЗрдВ рддрдп рд╣реЛрдиреЗ рддрдХ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреЗрд╡ рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред
рдореИрдВ рд░реАрдпрд▓рдЯрд╛рдЗрдо рдСрдлрд╝рд▓рд╛рдЗрди рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдкрд┐рдВрдЧрдЗрдВрдЯрд░рд╡рд▓ рдФрд░ рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕реЗ 30 рд╕реЗрдХрдВрдб рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░рд╛ рдкреНрд░рд╡рд╛рд╣ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ ... рдЯреИрдм?
рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?
рдореИрдВ рд░реАрдпрд▓рдЯрд╛рдЗрдо рдСрдлрд╝рд▓рд╛рдЗрди рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдкрд┐рдВрдЧрдЗрдВрдЯрд░рд╡рд▓ рдФрд░ рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕реЗ 30 рд╕реЗрдХрдВрдб рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░рд╛ рдкреНрд░рд╡рд╛рд╣ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ ... рдЯреИрдм?
рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕реЙрдХреЗрдЯ рдкрд░ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдИрд╡реЗрдВрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рд╕реЙрдХреЗрдЯ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдвреВрдВрдвреЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рд╕реНрдЯреЛрд░ рдореЗрдВ рдСрдлрд╝рд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ
рдпрд╣рд╛рдБ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ рдЪреВрдХ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ 25 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдкрд┐рдВрдЧ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдВрдЧ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 5 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд╣реЛрддрд╛ рд╣реИред
рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ | 5000 | рдПрдХ рдкреЛрдВрдЧ рдкреИрдХреЗрдЯ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рддрдиреЗ рдПрдордПрд╕ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
-- | -- | --
рдкрд┐рдВрдЧрдЗрдВрдЯрд░рд╡рд▓ | 25000 | рдПрдХ рдирдпрд╛ рдкрд┐рдВрдЧ рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рддрдиреЗ рдПрдордПрд╕?
рдореИрдВрдиреЗ рдЗрд╕реА рддреНрд░реБрдЯрд┐ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдФрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рддреНрд╡рд░рд┐рдд рд▓реЗрдЦрди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдпрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рд╣реИред
рдореЗрд░рд╛ рдкрд░рд┐рджреГрд╢реНрдп рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдХреНрд░реЛрдо рдкрд░ рдерд╛ рдЬрд╣рд╛рдВ рд╕реНрдХреНрд░реАрди рд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрдиреЗрдХреНрд╢рди рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рдореИрдВ рдХреНрд╡реЗрд░реА рд╡рд┐рдХрд▓реНрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдкрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рднреЗрдЬрддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдПрдХ рдирдП рдХреЗ рд╕рд╛рде рдЯреЛрдХрди рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ:
// client
io('myAppUrl', {
query: {
token: localStorage.getItem('myKey') || ''
}
});
io.on('reconnect_attempt', () => {
io.opts.query = {
token: localStorage.getItem('myKey') || ''
};
});
io.on('my_custom_connection_successful_event', (token) => {
localStorage.setItem('myKey', token);
});
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдХреНрд░реЛрдо рд╕рд░реНрд╡рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЛрдХрди рднреЗрдЬ рджреЗрдЧрд╛ред рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ 'reconnect_attempt'
рд╢реНрд░реЛрддрд╛ рдЬреЛрдбрд╝рд╛ рдерд╛ рдЬреЛ $ localStorage
рд╕реЗ рдирд╡реАрдирддрдо рдЯреЛрдХрди рд╕реЗрдЯ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдХрдВрд╕реЛрд▓ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ рдИрд╡реЗрдВрдЯ рд▓реЙрдЧрд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ 'reconnect_attempt'
рдИрд╡реЗрдВрдЯ рдХреЛ рдкреБрди: рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдореЗрд░реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред рд╕реНрдХреНрд░реАрди рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдорд┐рд▓рддрд╛ рд╣реИ:
рддреЛ рдХреЛрдИ 'reconnect_attempt'
рдШрдЯрдирд╛ рдХреЛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЯреЛрдХрди рдЕрднреА рднреА рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреНрдпреЛрдВ рд╣реИ (рдХрдиреЗрдХреНрдЯ рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рд╕реЗрдЯ)ред
рд▓рдВрдмреА рдХрд╣рд╛рдиреА рдЫреЛрдЯреА, рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рдХрд╕реНрдЯрдо "рдХрдиреЗрдХреНрд╢рди рд╕рдлрд▓" рдИрд╡реЗрдВрдЯ рдкрд░ io.opts.query
рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рддреБрд░рдВрдд рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдирдП рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ:
// client
io('myAppUrl', {
query: {
token: localStorage.getItem('myKey') || ''
}
});
io.on('my_custom_connection_successful_event', (token) => {
localStorage.setItem('myKey', token);
io.opts.query = {
token: token
};
});
рдЕрдм рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ io.opts.query
рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдЪрд░ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдиреЗрдХреНрдЯ рдФрд░ рдмрд╛рдж рдХреЗ рд╕рднреА рдкреБрди: рдХрдиреЗрдХреНрдЯ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдХрд┐рд╕реА рдкреБрди: рдХрдиреЗрдХреНрдЯ-рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдХреНрд╡реЗрд░реА рд╡рд┐рдХрд▓реНрдк рдбреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЧреБрдорд░рд╛рд╣ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВред рд╢рд╛рдпрдж рдореИрдВрдиреЗ рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛? рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рддреЛ 'reconnect_attempt'
рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрдЬрд╛рдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╣ рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ io.opts.query
рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдЪрд░ рд╣реИ рдЬрд┐рд╕реЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд░реНрддрдорд╛рди рдорд╛рди рдмрд╛рдж рдХреЗ рд╕рднреА рдкреБрди: рдХрдиреЗрдХреНрдЯ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЬрдм рднреА рдЖрдк рдЯреЛрдХрди рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 'refresh_token'
рдХрд╕реНрдЯрдо рдИрд╡реЗрдВрдЯ рдкрд░ рднреАред рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рддреЛ рдореИрдВ рдПрдХ рдЬрдирд╕рдВрдкрд░реНрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдкрд░ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореЗрд░реА рдЧрд▓рддреА рдпрд╣ рдереА рдХрд┐ 'reconnect_attempt'
рд╢реНрд░реЛрддрд╛ рдХреЛ рдореЗрд░реЗ рдХреЛрдб рдХреЗ рджреВрд╕рд░реЗ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛... :man_facepalming: рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓реЙрдЧрд┐рдВрдЧ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ред рддреЛ рд╣рд╛рдБ, рдореЗрд░реЗ рдкреБрди: рдХрдиреЗрдХреНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдХреНрд░рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ:
рдлрд┐рд░ рднреА, рдореЗрд░рд╛ рдпрд╣ рдЕрд╣рд╕рд╛рд╕ рдХрд┐ io.opts.query
рдХреЛ рдЬрдм рдЪрд╛рд╣реЗрдВ рддрдм рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрднреА рднреА рдорд╛рдиреНрдп рд╣реИред :рдкрд╕реАрдирд╛_рдореБрд╕реНрдХреБрд░рд╛рдирд╛:
рдХреНрдпрд╛ рдЕрднреА рднреА рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдирд╛ рдареАрдХ рд╣реИ? рдореИрдВ 2.0.3 рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╣реИрд▓реЛ, рдореБрдЭреЗ рдПрдХ рд╣реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рджреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред рдореИрдВрдиреЗ @omardoma рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдХреНрдпрд╛ рдХреЛрдИ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдУрдПрд╕ - рдЙрдмрдВрдЯреВ 18.04
рдиреЛрдб - 12.16.2
рдПрдирдкреАрдПрдо - 6.14.5
рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ - 2.3.0
рдореЗрд░рд╛ рдХреЛрдб -
app.js
const speech = require('@google-cloud/speech');
const speechClient = new speech.SpeechClient(); // Creates a client
const environmentVars = require('dotenv').config();
const io = require('socket.io')();
const http = require('http');
const server = http.createServer();
io.attach(server, {
pingTimeout: 60000,
});
console.log(io)
// =========================== SOCKET.IO ================================ //
io.on('connection', function (client) {
console.log('Client Connected to server');
let recognizeStream = null;
рдИрдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js" integrity="sha256-bQmrZe4yPnQrLTY+1gYylfNMBuGfnT/HKsCGX+9Xuqo=" crossorigin="anonymous"></script>
<script src="/js/client.js"></script>
рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓
const socket = io.connect("http://localhost:8080");
рдореИрдВ socket.io рд╕рдВрд╕реНрдХрд░рдг 2.3.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЬрдм рдореЗрд░реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд╛рд╕ UI рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрд▓рд░реНрдЯ (рдЬреЛ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ) рд╣реИ рдФрд░ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 30 рд╕реЗрдХрдВрдб (рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ + рдкрд┐рдВрдЧрдЗрдВрдЯрд░рд╡рд▓) рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рдЕрд▓рд░реНрдЯ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ 'рд╡реЗрдмрд╕реЙрдХреЗрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдВрдж рдпрд╛ рдмрдВрдж рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ' рд╕рдВрджреЗрд╢ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдШрдЯрдирд╛ рдХреЛ рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛рд░рдг рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдпреВрдЖрдИ рдХреЗ рдкрд╛рд╕ рдЕрд▓рд░реНрдЯ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЬрд╛рдПред рдЕрдЧрд░ рдореИрдВ рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ 10 рдорд┐рдирдЯ рддрдХ рдмрдврд╝рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ 10 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЙрдкрд░реЛрдХреНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛ рдкрдврд╝рд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ (рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ 10 рдорд┐рдирдЯ рддрдХ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЧрдпрд╛ рдерд╛)ред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЕрдЧрд░ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд░реБрдХрд╛рд╡рдЯ рдЖрджрд┐ рдЖрддреА рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХреНрд▓реЛрдЬ рдХрд╛рд░рдг рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдХреНрдпрд╛ рдЗрд╕ рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ+рдкрд┐рдВрдЧрдЗрдВрдЯрд░рд╡рд▓ рдХреЛ рдмрдврд╝рд╛рдирд╛ рдареАрдХ рд╣реИ? рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдЬрдм рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИ? рдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд▓рд┐рдП 60000 (v2.0.4) рд╕реЗ 5000 (v2.1.0+) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдЬреЛ рдХреНрд░реЛрдо рдЬреИрд╕реЗ рдХреБрдЫ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред
рдирд╡реАрдирддрдо v2.2.0 рд╕рд╣рд┐рдд v2.1.0+ рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд┐рдВрдЧрдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрдбрд╝реЗ рдорд╛рди рдкрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реИ:
рдпрд╛