لدي بعض الكود الأساسي (انظر أدناه) الذي يعمل كما هو متوقع عندما يتم تسمية الأحداث باسم ding و dong ولكن يتصرف بشكل غريب جدًا عندما يتم تسمية الأحداث ping and pong
عندما يتم تسمية الأحداث بينج وبونج
كود الخادم
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"`);
});
});
رمز العميل
<!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>
ليس لدي أي فكرة عما يجري هنا. قد يكون هذا أيضًا مرتبطًا بـ # 1951
أرى سلوكًا غريبًا أثناء استخدام أسماء أحداث "ping" / "pong" - يبدو أن هناك رمزًا في socket.io يفعل شيئًا ما مع ping and pong ، ليس لدي وقت لمزيد من التحقيق - تم تغيير الاسم إلى " بالتنقيط و "القطرة"
يتم استخدام الأحداث ping
و pong
في socket.io-client.
يرجى الاطلاع على https://github.com/socketio/socket.io-client#events
فقط محاصر في حدث "ping" لبضع ساعات.
أعتقد أن الوثيقة الرسمية قد تتزامن مع المستند على GitHub ؟
أو ربما يمكن تدوين أسماء الأحداث المحجوزة في المستند حتى لا يتم حبس الأشخاص مرة أخرى؟
يا له من مضيعة للوقت. كان لدينا جميعًا (بما في ذلك فريق socket.io) نفس الفكرة السيئة. إذن ما هو ELSE محجوز؟
التعليق الأكثر فائدة
فقط محاصر في حدث "ping" لبضع ساعات.
أعتقد أن الوثيقة الرسمية قد تتزامن مع المستند على GitHub ؟
أو ربما يمكن تدوين أسماء الأحداث المحجوزة في المستند حتى لا يتم حبس الأشخاص مرة أخرى؟