Socket.io: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдкреБрд░рд╛рдиреЗ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рдкреБрд░рд╛рдиреЗ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рдлрд╝рд░ре░ 2016  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: socketio/socket.io

рдирдорд╕реНрддреЗ,

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рд╕рд░реНрд╡рд░ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯрдЕрдк рд╣реИ рдЬреЛ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╡рд░реНрддрдорд╛рди рджрд┐рдирд╛рдВрдХ() рднреЗрдЬ рд░рд╣рд╛ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ 1 рд╕реЗрдХрдВрдб рдореЗрдВ рд╕рд░реНрд╡рд░ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рджрд┐рдирд╛рдВрдХ () рднреЗрдЬрддрд╛ рд╣реИ (рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ)ред

рдЕрдЧрд░ рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╣реИ рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рджреЛ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╣реИ рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рддреАрди рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╣реИ рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдЪрд╛рд░ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдФрд░ рдЖрдЧреЗ рдФрд░ рдЖрдЧреЗ...

рдХрдИ рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж рднреА рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрднреА рднреА рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдВрд▓рдЧреНрди рдХрд┐рдП рдмрд┐рдирд╛ рдкреБрд░рд╛рдиреЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЫреЛрдбрд╝рдиреЗ/рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдХреНрдпрд╛ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ?

рдореИрдВ рдиреЛрдб v5.4.1 рдХреЗ рд╕рд╛рде Socket.io v1.4.5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдпрд╣рд╛рдВ рдПрдХ рдХреЛрдб рдирдореВрдирд╛ рд╣реИ:

io.on('connection', function (socket) {

  // console.log(socket.connected);
  console.log('===================');

  setInterval(() => {
    console.log(socket.conn.id);
    socket.emit('data', { ts: new Date() });
  }, 1000);

});

рдЬрдм рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╣рд░ 2 рд╕реЗрдХрдВрдб рдореЗрдВ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд░реАрдлреНрд░реЗрд╢ рдХреЗ рд▓рд┐рдП socket.conn.id рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

тЭп node app.js                                                                                                                                       тПО
===================
kkizbfn-82gNOsyAAAAA
kkizbfn-82gNOsyAAAAA
===================
kkizbfn-82gNOsyAAAAA
m_ft38Y4XEY7W97VAAAB
kkizbfn-82gNOsyAAAAA
m_ft38Y4XEY7W97VAAAB
===================
kkizbfn-82gNOsyAAAAA
m_ft38Y4XEY7W97VAAAB
xH09a5Olle4A-HSNAAAC
kkizbfn-82gNOsyAAAAA
m_ft38Y4XEY7W97VAAAB
xH09a5Olle4A-HSNAAAC
===================
m_ft38Y4XEY7W97VAAAB
xH09a5Olle4A-HSNAAAC
kkizbfn-82gNOsyAAAAA
_GmZXIXg8VgUrdKlAAAD
m_ft38Y4XEY7W97VAAAB
xH09a5Olle4A-HSNAAAC
kkizbfn-82gNOsyAAAAA
_GmZXIXg8VgUrdKlAAAD

рдХрдИ рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж рднреА рдФрд░ рдХреЛрдИ рдХрдиреЗрдХреНрдЯреЗрдб рдХреНрд▓рд╛рдЗрдВрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░) рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдкреБрд░рд╛рдиреЗ рдХрдиреЗрдХреНрд╢рди рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@StevenBock рдЖрд╣ рдареАрдХ рд╣реИ .. рд╣рд╛рдБ рдпрд╣ рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИ - рдзрдиреНрдпрд╡рд╛рдж!

рдореБрдЭреЗ рдЗрд╕ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдореИрдВ рдПрдХ рдлрд╛рдЗрд▓ рдкреВрдВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдирдИ рд▓рд╛рдЗрди рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдПрдирдкреАрдПрдо 'рдЯреЗрд▓' рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдХреЛрдб рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ:

const io = require('socket.io')(8080);

const Tail = require('tail').Tail;
const tailTmpFile = new Tail("./tmp.txt");

io.on('connection', function (socket) {

  console.log(socket.conn.id);

  tailTmpFile.on("line", function (data) {
      console.log('emitting Yes: ', socket.conn.id);
      socket.emit('file', { data: data, ts: Date() });
  });

});

рд╕реЙрдХреЗрдЯ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдореБрдЭреЗ рдкреВрдВрдЫ рдШрдЯрдирд╛ (tailTmpFile.on) рдХрд╛ рдирд┐рдкрдЯрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдкрд░ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

var oneSecondInterval = setInterval(() => {
    console.log(socket.conn.id);
    socket.emit('data', { ts: new Date() });
  }, 1000);

socket.on('disconnect', function(){
    clearInterval(oneSecondInterval);
});

рдЗрд╕рд╕реЗ рдЗрд╕реЗ рдкреБрд░рд╛рдиреЗ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдкрд░ рдмрдиреЗ рд░рд╣рдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред

@StevenBock рдЖрд╣ рдареАрдХ рд╣реИ .. рд╣рд╛рдБ рдпрд╣ рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИ - рдзрдиреНрдпрд╡рд╛рдж!

рдореБрдЭреЗ рдЗрд╕ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдореИрдВ рдПрдХ рдлрд╛рдЗрд▓ рдкреВрдВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдирдИ рд▓рд╛рдЗрди рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдПрдирдкреАрдПрдо 'рдЯреЗрд▓' рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдХреЛрдб рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ:

const io = require('socket.io')(8080);

const Tail = require('tail').Tail;
const tailTmpFile = new Tail("./tmp.txt");

io.on('connection', function (socket) {

  console.log(socket.conn.id);

  tailTmpFile.on("line", function (data) {
      console.log('emitting Yes: ', socket.conn.id);
      socket.emit('file', { data: data, ts: Date() });
  });

});

рд╕реЙрдХреЗрдЯ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдореБрдЭреЗ рдкреВрдВрдЫ рдШрдЯрдирд╛ (tailTmpFile.on) рдХрд╛ рдирд┐рдкрдЯрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@StevenBock рдареАрдХ рд╣реИ рдмрдврд╝рд┐рдпрд╛ - рдорд┐рд▓ рдЧрдпрд╛ред

рдпрд╣ рдХреЛрдб рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред

io.on('connection', function (socket) {

  console.log(socket.conn.id);

  var emitLine = function () {
    var callback = function (data) {
      socket.emit('file', { data: data, ts: Date() });
    }
    tailTmpFile.on("line", callback);

    // dispose function
    return function() {
      tailTmpFile.removeListener('line', callback);
    }
  }();

  socket.on('disconnect', function () {
    // dispose tail file listener
    emitLine();
  });

});

рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕рдиреЗ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред

рдЪреАрдпрд░реНрд╕ред

рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

samccone picture samccone  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MyMomSaysIAmSpecial picture MyMomSaysIAmSpecial  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adammw picture adammw  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Aweather picture Aweather  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

chfeizy picture chfeizy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ