Estoy trabajando en la extensión de Chrome usando el manifiesto v3 que necesita conectarse a un dispositivo bluetooth (usando la API web de Bluetooth), recibir mensajes del dispositivo y enviar los mensajes a múltiples secuencias de comandos de contenido diferentes.
Ya tengo una versión funcional con un solo script de contenido que se conecta y se comunica con el dispositivo, pero como necesito que se conecte a varios sitios diferentes, pensé en cambiar a un trabajador de servicio para la comunicación por bluetooth.
actualmente, dado que no puedo abrir el diálogo de conexión bluetooth en el trabajador del servicio, inyecto un script de conexión simple en la pestaña activa actual y se conecta, pero no tengo forma de devolver el objeto del dispositivo bluetooth desde el script de contenido inyectado a el trabajador del servicio. ¿Hay alguna forma de hacer mi propio diálogo de conexión bluetooth para que la conexión se realice a través del script del trabajador del servicio? ¿O hay alguna forma de transferir el objeto del dispositivo bluetooth desde el script de contenido inyectado al trabajador del servicio?
Esta es la inyección de la función.
if (message.text == "click") { chrome.tabs.query({active: true,currentWindow: true}, function(tabs) { chrome.scripting.executeScript( { target: {tabId: tabs[0].id}, func: openConnectionDialog, }) });Esta es la función inyectada.
function openConnectionDialog() { return navigator.bluetooth.requestDevice({ filters: [{ namePrefix: 'myDevice' }], optionalServices: ['6e400001-b5a3-f393-e0a9-e50e24dcca9e'] }) .then(device => { console.log(device) chrome.runtime.sendMessage({text: "device connected", device: device}) }); }Cuando escucho el mensaje, recibo el mensaje de texto pero un objeto vacío para el dispositivo, ya que parece que no es posible enviar un objeto entre las secuencias de comandos de contenido y el trabajador del servicio.
Actualmente, Web Bluetooth no es compatible con Service Workers, incluso con Extensions. Si presenta una solicitud de función para esto en el rastreador de problemas de Chromium , nos ayudará a rastrear el interés en desarrollar esta capacidad.