Saya memiliki beberapa kode dasar (lihat di bawah) yang berfungsi seperti yang diharapkan ketika acara diberi nama ding dan dong tetapi berperilaku sangat aneh ketika acara diberi nama ping dan pong
Ketika acara diberi nama ping dan pong
Kode Server
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"`);
});
});
Kode Klien
<!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>
Saya tidak tahu apa yang terjadi di sini. Juga ini mungkin terkait dengan #1951
Saya melihat perilaku aneh saat menggunakan nama acara 'ping' / 'pong' - tampaknya ada kode di socket.io yang melakukan sesuatu dengan ping dan pong, saya tidak punya waktu untuk menyelidiki lebih lanjut - mengubah nama menjadi ' menetes' dan 'jatuh'
Acara ping
dan pong
digunakan di socket.io-client.
silakan lihat https://github.com/socketio/socket.io-client#events
Hanya terjebak oleh acara 'ping' selama beberapa jam.
Saya pikir dokumen resmi dapat disinkronkan dengan dokumen di GitHub ?
Atau mungkin nama event yang dicadangkan bisa dicantumkan di dokumen agar orang tidak terjebak lagi?
apa pembuang waktu. Kami semua (termasuk tim socket.io) memiliki ide buruk yang sama. Jadi apa ELSE yang dicadangkan?
Komentar yang paling membantu
Hanya terjebak oleh acara 'ping' selama beberapa jam.
Saya pikir dokumen resmi dapat disinkronkan dengan dokumen di GitHub ?
Atau mungkin nama event yang dicadangkan bisa dicantumkan di dokumen agar orang tidak terjebak lagi?