En mi experiencia personal con extensiones de escritura, que tienden a utilizar para la inicialización sendMessage
estado, y conectarse a cualquier momento que quiero enviar cosas repetidamente.
Como ejemplo, mis extensiones generalmente tienen opciones configurables por el usuario, y necesito una forma de enviar esas opciones a mis secuencias de comandos de contenido. Uso sendMessage
y onMessage
para pasar un objeto JSON a mis scripts de contenido. Este objeto contiene las diversas configuraciones controladas por el usuario, y posiblemente también otro estado.
También creé una pequeña biblioteca que permite definir atajos de teclado en la página de fondo. Cómo funciona es simple: se inyecta un guión de contenido en cada página, que luego escucha los eventos keydown
y keyup
.
Cuando ocurre un evento, usa chrome.runtime.connect
para comunicarse con la página de fondo. Creo que este es un excelente ejemplo de cuándo una conexión de larga duración sería más útil que muchas llamadas sendMessage
.
No creo que haya nada que requiera su uso de una manera u otra ... podría usar múltiples sendMessage
o solo enviar un mensaje con la conexión. Creo que es más una cuestión de semántica y elegir qué herramienta tiene más sentido para el trabajo.
También tenga en cuenta que el uso de connect facilita la tarea de almacenar un estado separado para cada conexión, mientras que podría ser un poco más difícil de hacer con sendMessage
.
En cuanto al rendimiento ... Honestamente, no sé, pero esperaría que al menos sean similares, es decir, el envío de 5 sendMessage
sería más o menos equivalente a enviar 5 mensajes con la conexión. Tenga en cuenta que son asincrónicos, por lo que el tiempo puede fluctuar según las circunstancias.
para futuros espectadores, creo que 'sendmessage' utiliza' chrome.runtime.connection', abriendo un puerto, luego cerrando el puerto después de enviar el mensaje único, por lo que en términos de rendimiento, deberían ser idénticos. Pruebe 'console.log (sendResponse)'. –