Saltar al contenido

Inspector ​

El Inspector es una sola línea de tiempo para todas las herramientas: cada mensaje OSC, datagrama, intercambio HTTP, publicación MQTT, mensaje WebSocket, paquete retransmitido e intercambio de emulador aterriza ahí, decodificado, con los bytes de los que estaba hecho. Úsalo para ver qué pasó realmente por el cable, en qué orden y qué le ocurrió.

Vive en el panel inferior, como la pestaña Inspector junto a la consola, así que está en todas las pantallas. Haz clic en la pestaña para abrirlo; el panel se abre con altura suficiente para unas filas y el detalle de una trama. El botón ⤢ (A toda la altura de la ventana) hace que el panel ocupe toda la altura de la ventana. El Inspector conserva su lista y su selección mientras cierras el panel o cambias de pantalla.

Capturar ​

La captura está desactivada cuando Signal Lab arranca, y mientras está desactivada no cuesta nada: las herramientas ni siquiera construyen tramas.

  1. Abre la pestaña Inspector.
  2. Pulsa Activar captura. El punto de la pestaña se vuelve rojo y late.
  3. Usa cualquier herramienta. Las tramas aparecen en la parte superior de la lista, la más reciente primero.
  4. Pulsa Desactivar captura cuando tengas lo que necesitas.

La pestaña muestra cuántas tramas se han capturado, desde cualquier pantalla.

Las tramas se capturan desde el momento en que activas la captura, nunca antes: actívala primero y luego envía.

En un servidor, la captura pertenece al servidor: todas las páginas conectadas a él ven las mismas tramas, y activarla o vaciarla en una página lo hace para todas.

Qué se captura ​

HerramientaTramasCuántas
OSC: envíoCada mensaje enviadoTodos
OSC: monitorCada paquete recibido; uno que no se decodifica se marca con el error de decodificaciónTodos
OSC: generador de señalesMensajes enviadosComo máximo uno cada 100 ms, marcado sampled
Difusión: enviar una vezCada datagrama, uno por destino; un envío fallido con su errorTodos
Difusión: balizaDatagramas enviadosComo máximo uno cada 50 ms
Difusión: escucha de descubrimientoSondeos recibidosComo máximo uno cada 40 ms
Difusión: escucha de descubrimientoSus respuestas (auto-reply)Todas
HTTP: envío, señales, solicitudes de experimentosCada intercambio: la línea de solicitud, el estado y el tiempo, los encabezados de la respuesta y el inicio del cuerpoTodos
HTTP: ráfaga de carga y solicitudes bajo cargaIntercambiosComo máximo uno cada 100 ms
MQTT: conexiónPublicaciones enviadasTodas
MQTT: conexiónMensajes recibidosComo máximo uno cada 200 ms
MQTT: una señal MQTT enviada mientras la pantalla no está conectada a su brókerLa publicaciónTodas
WebSocketMensajes enviados y recibidosTodos mientras el tráfico es ligero; como máximo 200 por segundo
EmuladoresLo que llega y la respuesta, juntosComo máximo un intercambio cada 10 ms
DegradaciónCada datagrama o fragmento retransmitido, en ambos sentidos, con su suerteComo máximo uno cada 25 ms para los dos sentidos juntos
Tormenta (UDP)Paquetes de inundación, todos idénticosUno por segundo, marcado sampled 1/s; una tormenta TCP no captura ninguno
EscánerCada puerto abierto, con su bannerTodos
ExperimentosLo que envían los pasos de una ejecución (un mensaje TCP: la carga útil escrita y la respuesta leída) y lo que reciben sus esperasComo la herramienta que usa

Una herramienta que muestrea deja el resto fuera a propósito y los cuenta: la siguiente trama que sí dibuja dice cuántas se guardó, en su veredicto como +n not shown (sampled · +5 not shown). El recuento es de lo que la herramienta habría dibujado, no de lo que la propia captura descartó (consulta Recuentos y huecos).

La lista de tramas ​

ColumnaQué
HoraCuándo se capturó, al milisegundo.
Sentido→ enviada (tx), ← recibida (rx). Para un relé, → es del cliente al destino y ← del destino al cliente.
Proto.osc, udp, tcp, http, mqtt o ws.
ParEl otro extremo: un IP:port, una URL, un bróker.
BytesEl tamaño de la trama.
ResumenUna línea en la notación propia del protocolo, como /fader/1 0.75 o GET http://127.0.0.1:8080/ → 200 in 3ms.
VeredictoQué le ocurrió, cuando hay algo que decir.

El veredicto es verde, ámbar o rojo. Rojo es una pérdida o un fallo (dropped (loss), failed, error: …); ámbar es una trama alterada o solo una muestra de muchas (corrupted, copy 2/2, sampled, +n not shown); verde es el resto. Algunos veredictos que verás:

VeredictoDeSignifica
forwarded +42msDegradaciónReenviada tras ese retardo; pueden seguir · corrupted, · reordered o · copy 1/2.
dropped (loss), dropped (burst), dropped (offline)DegradaciónPerdida a propósito, y por qué.
throttledDegradaciónDescartada por el límite de ancho de banda.
· client→target, · target→clientDegradaciónCierra el veredicto de cada trama retransmitida, antes de cualquier +n not shown: hacia dónde iba.
#2 → 200 OK · 37 B, — → 404 …EmuladoresQué regla respondió (—: ninguna) y la respuesta.
down, down → 503EmuladoresLlegó mientras el emulador estaba caído.
200 OK, failedHTTPEl estado de la respuesta, o ninguna respuesta.
openEscánerUn puerto abierto.
auto-replyDescubrimientoUna respuesta que la escucha envió a un sondeo.
clears retainedMQTTUna publicación retenida vacía.
+n not shownCualquier herramienta que muestreeSe dejaron fuera esas tramas desde la anterior; sigue al otro veredicto de la trama tras un ·.

La lista conserva las 4000 tramas más recientes y dibuja las 300 más recientes que coinciden con los filtros; bajo los filtros dice cuántas muestra de cuántas coinciden.

Filtrar ​

  • Escribe en el campo de texto (filtrar por dirección, par, origen…) para conservar las tramas cuyo resumen, extremo, origen, protocolo o veredicto contenga el texto.
  • Haz clic en las etiquetas de protocolo (osc, udp, tcp, http, mqtt, ws) para mostrar solo esos protocolos. Sin ninguna activada, se muestran todos los protocolos.
  • Haz clic en tx o rx para mostrar solo las tramas enviadas o solo las recibidas.
  • restablecer limpia los tres.

Los filtros cambian solo lo que muestra la lista. La captura, los recuentos y una exportación siempre abarcan todo.

Pausar y vaciar ​

Pausar vista congela la lista para que puedas leerla mientras el tráfico continúa; la captura sigue. Reanudar vista deja entrar tramas nuevas otra vez. Las tramas que llegaron mientras la vista estaba en pausa no se añaden a la lista, pero están en la captura y en una exportación.

Borrar vacía la lista y la captura, y restablece sus recuentos.

Recuentos y huecos ​

La barra de la parte superior cuenta las tramas capturadas y sus bytes, y cuán llena está la captura (tramas retenidas de 8192).

Cuando las tramas llegan más rápido de lo que la lista puede aceptarlas —más de 250 en una octava parte de segundo—, la lista omite las más antiguas. Una etiqueta ámbar cuenta entonces las tramas no mostradas, y una fila en la lista marca dónde faltan. Esas tramas siguen en la captura, a menos que otras más nuevas las hayan desplazado desde entonces: expórtala para verlas.

El detalle de una trama ​

Haz clic en una fila para ver la trama a la derecha.

CampoQué
n.ºEl número de la trama. Los números suben en orden de captura y nunca se reutilizan.
HoraCuándo se capturó.
sentidoEnviada o recibida.
ProtocoloComo en la lista.
origenLa herramienta que la capturó (osc-send, osc-monitor, netsim, emulator, experiment-wait, …), y su número de tarea cuando pertenece a una.
localLa dirección de este lado, cuando la hay. Para una trama retransmitida, la dirección en la que escucha el relé.
ParEl otro extremo. Para una trama retransmitida, hacia dónde iba: el destino, o el cliente al que volvió la respuesta.
tamañoSu tamaño en bytes.
VeredictoComo en la lista.

Bajo Decodificado está la trama leída en su protocolo: cada mensaje de un bundle OSC con sus argumentos, los encabezados de una respuesta HTTP y el inicio de su cuerpo, la solicitud y la respuesta de un emulador.

Bajo Bytes hay un volcado hex: desplazamiento, 16 bytes en hex y los mismos bytes como texto. La lista lleva el primer KiB de cada trama; cuando una trama es más larga, un botón bajo el volcado carga todo.

Qué conserva una trama ​

LímiteValorAl llegar al límite
Bytes que conserva una trama256 KiBUna trama más larga conserva sus primeros 256 KiB y dice cuánto del total conservó.
Tramas en la captura8192La trama más antigua hace sitio.
Bytes que conserva la captura en total64 MiBLas tramas más antiguas hacen sitio.

Algunas tramas no conservan bytes: los intercambios HTTP (su tamaño se registra, y los encabezados de la respuesta y el inicio del cuerpo están en el texto decodificado) y los puertos abiertos del Escáner.

Una trama MQTT conserva la carga útil del mensaje, no el paquete del protocolo que lo rodea; el tema, el QoS y el indicador de retención están en su resumen.

Secretos ​

Mientras una ejecución de experimento o Enviar ahora usa secretos, sus valores se enmascaran en cada trama antes de capturarla: •••• en el resumen, el texto decodificado, las direcciones y el veredicto, y * por cada byte de la carga útil, para que los desplazamientos del volcado sigan siendo ciertos. Las credenciales de la pantalla HTTP tampoco aparecen nunca: una trama HTTP contiene la respuesta, no el encabezado Authorization que se envió.

Guardar una trama como señal ​

Para guardar un paquete que has capturado y volver a enviarlo más tarde, cuando el dispositivo que lo envió ya no está:

  1. Selecciona la trama.
  2. Pulsa Guardar como señal.

La señal va a la carpeta Capturadas de la biblioteca de señales con todos los bytes de la trama, tomados de lo que conservó la captura, no del texto decodificado. Se nombra a partir del resumen de la trama, y su nota dice de qué trama viene.

Lo que obtienes depende de la trama:

TramaSeñal
Un datagrama OSC o UDPUna señal UDP sin procesar con los bytes de la trama, en hex.
Una publicación MQTT —enviada, recibida o de un emulador—Una señal MQTT con el bróker, el tema, el QoS y el indicador de retención de la trama, y su carga útil como texto, exactamente como estaba. Una carga útil vacía se conserva, así que limpiar un valor retenido se puede guardar.
Cualquier otra cosa: un flujo TCP (incluido uno que llevó un relé, o el del nodo TCP), un intercambio HTTP, un mensaje WebSocket, un paquete MQTT que no es una publicación (la suscripción de un cliente en un emulador)Nada: el botón está desactivado y su consejo dice por qué. Una señal envía un datagrama o una publicación; estas no se pueden volver a enviar como estaban.

Un datagrama se envía a:

  • una trama recibida: la dirección que la recibió (el lado local), para que la señal haga el papel del emisor;
  • una trama enviada: el extremo al que se envió;
  • una trama retransmitida, en cualquier sentido: la dirección hacia la que iba: el destino para una trama que va desde el cliente, el cliente para una respuesta.

Cuando esa dirección es todas las direcciones de este equipo —un monitor que escucha en 0.0.0.0:9000 o [::]:9000—, la señal se dirige a este equipo en su lugar: 127.0.0.1:9000 o [::1]:9000. Abre la señal y cambia su destino si quieres otra dirección.

Una señal MQTT va al bróker que indica la trama. Se llega a un bróker que escucha en todas las direcciones por 127.0.0.1 de la misma manera.

El botón también está desactivado para:

  • una trama que no se conservó entera: una mayor de 256 KiB, o una que no conservó ningún byte;
  • un mensaje MQTT cuya carga útil no es texto: la carga útil de una señal es texto, así que sus bytes no se podrían volver a enviar como estaban;
  • una trama recibida que no nombra ningún socket de este lado, así que no hay dirección a la que enviar.

Una trama que la captura ya ha soltado tampoco se puede guardar; la consola lo indica. Mientras no se puede leer el archivo de la biblioteca, Guardar como señal también está desactivado, y el consejo muestra el error del archivo (consulta Señales).

Exportar ​

Exportar .jsonl y Exportar .txt escriben toda la captura —hasta 8192 tramas, cada byte que conservó cada una, digan lo que digan los filtros— en un archivo capture-<time>.jsonl o capture-<time>.txt en la carpeta de datos (consulta Archivos). La consola dice dónde. En un navegador conectado a un servidor, el archivo se escribe en el servidor y tu navegador lo descarga.

Una captura vacía no se escribe; la consola dice que no hay nada que guardar.

  • .jsonl — un objeto JSON por línea, una línea por trama: seq, ts (milisegundos desde 1970), proto, dir, source, job_id, local, remote, bytes, kept, summary, detail, hex (el volcado del primer KiB), verdict y data, los bytes que conservó en base64.
  • .txt — para leer: una línea por trama con su número, hora, dirección, protocolo, extremo, tamaño y veredicto, y luego su resumen, su texto decodificado y un volcado hex de cada byte que conservó.
json
{"seq":12,"ts":1767225600123,"proto":"osc","dir":"rx","source":"osc-monitor","job_id":3,"local":"0.0.0.0:9000","remote":"127.0.0.1:53211","bytes":20,"summary":"/fader/1 0.75","detail":"/fader/1 0.75","hex":"0000  2f 66 61 64 65 72 2f 31  00 00 00 00 2c 66 00 00  |/fader/1....,f..|\n0010  3f 40 00 00                                       |?@..|\n","verdict":null,"kept":20,"data":"L2ZhZGVyLzEAAAAALGYAAD9AAAA="}

Venir de otros sitios ​

Otras pantallas apuntan a tramas: una espera en la línea de tiempo de un experimento enlaza la trama con la que coincidió, y la lista de lo recibido de un emulador tiene un botón ⌕ (Abrir en el Inspector) en cada intercambio. Seguir uno abre el Inspector con esa trama seleccionada, los filtros limpios y la vista reanudada.