Socket.io: Sind „ping“ und/oder „pong“ reservierte Veranstaltungen?

Erstellt am 28. Jan. 2016  ·  4Kommentare  ·  Quelle: socketio/socket.io

Ich habe einen grundlegenden Code (siehe unten), der wie erwartet funktioniert, wenn die Ereignisse ding und dong heißen, sich aber sehr seltsam verhält, wenn die Ereignisse ping und pong heißen

Wenn die Ereignisse Ping und Pong heißen

  • Der Servercode protokolliert die „connect“- und „disconnect“-Meldungen, aber nicht die „ping“- und „pong“-Meldungen
  • Der Client-Code protokolliert die „Ping“-Nachricht und nach einer langen Wartezeit (10+ Sekunden) die „Pong“-Nachricht, und wenn ich weiter warte, erhalte ich alle 10+ Sekunden eine weitere „Pong“-Nachricht

Servercode

const fs             = require('fs');
const http           = require('http');
const path           = require('path');
const SocketIOServer = require('socket.io');

const app = new http.Server();
app.on('request', (req, res) => {

  const index = path.join(__dirname, 'public', 'index.html')

  fs.readFile(index, function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200);
    res.end(data);
  });
});
app.listen(3000, 'localhost');

const io = new SocketIOServer(app);


// could also use "connection"
io.on('connect', function (socket) {
  console.log(`${socket.id} "connect"`);

  socket.on('ping', (data) => {
    console.log('Receive "ping"');

    io.emit('pong', {});  
    console.log('Send "pong"');  
  });

  socket.on('disconnect', () => {
    console.log(`${socket.id} "disconnect"`);    
  });
});

Client-Code

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Socket.IO Events</title>
  </head>
  <body>
    <h1>Socket.IO Events</h1>

    <script src="/socket.io/socket.io.js"></script>
    <script>
      const socket = io();

      socket.on('pong', (data) => {
        console.log('Receive "pong"');
      });

      socket.emit('ping', {});
      console.log('Send "ping"');

    </script>
  </body>
</html>

Ich habe keine Ahnung, was hier los ist. Auch dies kann mit # 1951 zusammenhängen

Hilfreichster Kommentar

Nur für ein paar Stunden vom "Ping"-Ereignis gefangen.
Ich denke, das offizielle Dokument kann mit dem Dokument auf GitHub synchronisiert werden?
Oder vielleicht können reservierte Veranstaltungsnamen auf dem Dokument vermerkt werden, damit niemand wieder eingeklemmt wird?

Alle 4 Kommentare

Ich sehe seltsames Verhalten bei der Verwendung von 'ping' / 'pong'-Ereignisnamen - es scheint Code in socket.io zu geben, der etwas mit ping und pong macht, ich habe keine Zeit, weiter nachzuforschen - Name geändert in ' tropfen' und 'tropfen'

Die Ereignisse ping und pong werden in socket.io-client verwendet.
siehe https://github.com/socketio/socket.io-client#events

Nur für ein paar Stunden vom "Ping"-Ereignis gefangen.
Ich denke, das offizielle Dokument kann mit dem Dokument auf GitHub synchronisiert werden?
Oder vielleicht können reservierte Veranstaltungsnamen auf dem Dokument vermerkt werden, damit niemand wieder eingeklemmt wird?

was für ein zeitvertreib. Wir alle (einschließlich des socket.io-Teams) hatten die gleiche schlechte Idee. Also, was ist sonst noch reserviert?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen