Contador en vivo de quién está viendo un artículo de noticias en un sitio web. Corriente de chorro de Laravel.
.leaving(user => {
this.participants.splice( this.participants.indexOf(user, 1));
})
.joining(user => {
this.participants.push(user);
this.count++;
})
Sin embargo, noté que si hay dos usuarios en la página, sigue eliminando el que tiene el valor de ID más pequeño. Probó la teoría con éxito.
Entonces, si joe inicia sesión con el ID de usuario 100 y luego Jimmy inicia sesión con el ID 200. Muestra a ambos usuarios en una lista.
La pantalla de Jimmy:
Si Joe actualiza la página, elimina a Jimmy de los usuarios activos y lo coloca nuevamente como activo. Lo muestra dos veces en su pantalla después de la actualización. Los elementos siguen siendo correctos para Joe independientemente de quién actualice (entra o sale).
La pantalla de Jimmy:
Es como si el índice no fuera correcto y, por lo tanto, no se empalmara correctamente simplemente eliminando el último elemento de la lista y rellenándolo con el usuario de ID más bajo.
Sin embargo, noté que si hay dos usuarios en la página, sigue eliminando el que tiene el valor de ID más pequeño.
Tiene sentido porque probablemente tenga la matriz ordenada e indexOf devuelva la primera ocurrencia encontrada.
El método indexOf() devuelve el primer índice en el que se puede encontrar un elemento dado en la matriz, o -1 si no está presente.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
Así que probablemente tengas que filtrar de manera diferente antes de hacer el empalme...