Socket disconnect event doesn't always fire
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 28/100
- Type d'issue
- Bug
- Clarté
- À clarifier
- Activité
- À l'abandon
- Stack technique
- javascript, react-native
- Domaine
- mobile-dev, networking
Piste de recherche
Aucun fichier du dépôt ni aucun test n’est mentionné, et le rapport ne contient aucune étape de reproduction. Commencez par reproduire la configuration client/serveur Socket.IO fournie sur iOS 18, puis suivez le comportement de déconnexion et d’état de la connexion impliqué dans les sockets obsolètes. Le travail est considéré comme terminé lorsque la cause est identifiée et qu’un test de régression est ajouté ou que la limitation confirmée est clairement documentée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug
We have a React Native app using Socket.io to communicate with our servers.
Some users experience a quirk whereby leaving the app doesn't fire a disconnect event on the server for a very long time (hours).
See screenshot of some of our logs:
This also occurs upon making a io.in([...]).fetchSockets() call: those sockets still look open.
To Reproduce
N/A
Socket.IO server version: 4.8.1
Server
import { Server } from "socket.io";
const io = new SocketServer<
ClientToServerEvents,
ServerToClientEvents,
{ [event: string]: (...args: unknown[]) => void },
SocketData
>(server, {
path: "/socket",
serveClient: false,
cookie: true,
adapter: socketIoPubSubTopic
?
createAdapter(socketIoPubSubTopic)
: undefined,
});
if (socketIoPubSubTopic) {
await io.of("/").adapter.init();
log.log("Pub/sub subscription initialized for Socket.IO");
}
io.on("connection", async (socket) => {
const userId = socket.data.userId;
log.log({ userId }, `Socket connected for ${userId}`);
if (userId) {
await updateJoinedRooms(userId, socket);
}
socket.on("disconnect", () => {
log.log({ userId }, `Socket disconnected for ${userId}`);
});
});
Socket.IO client version: 4.8.1
Client
import { io } from "socket.io-client";
const newSocket: TypedSocket = io(PUBLIC_SOCKET_HOST, {
auth: !useCookies
? {
token,
}
: undefined,
path:"/socket",
ackTimeout: 10000,
retries: 12,
timeout: 5000,
reconnectionDelayMax: 5000,
withCredentials: useCookies,
});
Expected behavior
To always get the disconnect event firing.
Platform:
- Device: iPhone 14 Plus
- OS: iOS 18
Additional context
Add any other context about the problem here.
- Langage dominant
- TypeScript
- Étoiles
- 63.2k
- Forks
- 10.2k
- Merge moyen
- 6 j 4 h
- PR mergées (30 j)
- 6
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de socketio/socket.io
-
[engine.io-client] The Node.js cookie jar lets Expires override Max-AgePeut-être pris @Ayush701-code-zm l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
socketio/socket.io#5590 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
Raise Engine.IO minimum to 6.6.10 for published security fixesPeut-être pris @harshit-exe-dev l’a pris il y a 29 jours. Ouverte
Difficulté 1/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 2 jours
-
Can't set response headers in Server.handleUpgradePeut-être pris @MsfPablo l’a pris il y a 90 jours. Ouvertequestion
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
socketio/socket.io#5497 · 2 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
WebTransport ignores query parameters in URLPeut-être pris @cyphercodes l’a pris il y a 178 jours. Ouverteneeds major release question
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
socketio/socket.io#5496 · 3 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
[engine.io-client] close() called in an upgrade listener does not close the socketPeut-être pris @adityajai119 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 20/100
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de socketio/socket.io
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
outline/outline#14529 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 1-3 heures Accessibilité débutants 86/100
g1331/phantom-circuit#93 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
compiler
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
HerringtonDarkholme/hd-lang#1699 ·
Les mainteneurs répondent en général sous 1 jour