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
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
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?
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?