Web Serial API 支援在電腦上透過 Chrome 117 與已配對的經典藍牙裝置上的 RFCOMM 服務進行通訊。舉例來說,這可讓無線耳機使用 RFCOMM 管理音訊設定和韌體更新。如需瞭解詳情,請參閱網路上的「透過藍牙傳輸序列資料」。
自 Chrome 130 桌面版起,Web Serial API 的改善功能可讓網頁應用程式偵測藍牙 RFCOMM 序列埠可用時機,而無須開啟序列埠。這麼做可避免在無線裝置遭到刻意中斷連線時,發生不必要的重新連線情形。
無線裝置離開主機的範圍時,任何由網路應用程式開啟的無線序列埠都會自動關閉。在這種情況下,網路應用程式可能會嘗試使用 SerialPort open()
方法重新開啟通訊埠。不過,如果無線裝置是故意中斷連線 (例如使用者透過作業系統控制面板中斷連線),網路應用程式應避免重新開啟連接埠,以免重新連線至無線裝置。
透過新的布林值 SerialPort connected
屬性,公開主機無線序列埠的無線裝置邏輯連線狀態,網頁應用程式現在可以區分這些情況,並只在連線中斷是無意造成的情況下重新連線。
如果主機代管的無線裝置與系統有任何有效連線,無線序列埠的 SerialPort connected
屬性就會設為 true。對於有線序列埠,如果埠已實際連接至系統,則為 true。
下列程式碼片段說明如何檢查可用的裝置,並可能自動連線。
const ports = await navigator.serial.getPorts();
for (const port of ports) {
if (port.connected) {
// Automatically try to connect to the Bluetooth device.
await port.open({ baudRate: 9600 });
} else {
// Otherwise, when the port is not logically connected:
// 1. Prompt the user to make sure the Bluetooth device is available.
// 2. Show a "connect" button to try opening the port.
}
}
先前只有有線序列埠會發送「連線」和「斷線」事件。藍牙 RFCOMM 序列埠現在會在埠邏輯連線或中斷連線時調度這些事件。
示範
資源
特別銘謝
感謝 Jack Hsieh 和 Reilly Grant 提供評論。