Web Seri API'si, masaüstünde Chrome 117'den itibaren eşlenen Bluetooth Klasik cihazlarda RFCOMM hizmetleriyle iletişim kurmayı destekler. Örneğin, bu sayede kablosuz kulaklıklar ses ayarlarını ve donanım yazılımı güncellemelerini yönetmek için RFCOMM'yi kullanabilir. Daha fazla bilgi için Web'de Bluetooth üzerinden seri başlıklı makaleyi inceleyin.
Masaüstü için Chrome 130'tan itibaren Web Seri API'sinde yapılan bir iyileştirme, web uygulamalarının Bluetooth RFCOMM seri bağlantı noktasını açmak zorunda kalmadan kullanılabilir olduğunu algılamasını sağlar. Bu sayede, kablosuz cihazın bağlantısı kasıtlı olarak kesildiğinde gereksiz yeniden bağlantılar önlenir.
Bir kablosuz cihaz ana makinenin kapsama alanından çıktığında, web uygulaması tarafından açılan tüm kablosuz seri bağlantı noktaları otomatik olarak kapanır. Bu gibi durumlarda web uygulaması, SerialPort open()
yöntemiyle bağlantı noktasını yeniden açmayı deneyebilir. Ancak kablosuz cihazın bağlantısı kasıtlı olarak kesildiyse (ör. kullanıcı tarafından işletim sistemi kontrol panelinden) web uygulaması, kablosuz cihaza yeniden bağlanmayı önlemek için bağlantı noktasını yeniden açmaktan kaçınmalıdır.
Web uygulamaları, kablosuz seri bağlantı noktasını barındıran kablosuz cihazın mantıksal bağlantı durumunu yeni bir Boole SerialPort connected
özelliği aracılığıyla göstererek artık bu durumları ayırt edebilir ve yalnızca bağlantının kasıtlı olarak kesilmediği durumlarda yeniden bağlanabilir.
Bağlantı noktasını barındıran kablosuz cihazın sistemle etkin bağlantıları varsa SerialPort connected
özelliği kablosuz seri bağlantı noktaları için doğrudur. Kablolu seri bağlantı noktalarında, bağlantı noktası sisteme fiziksel olarak bağlıysa doğru değerini alır.
Aşağıdaki snippet'te, hangi cihazların kullanılabilir olduğunu nasıl kontrol edebileceğiniz ve bunlara otomatik olarak nasıl bağlanabileceğiniz gösterilmektedir.
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.
}
}
Daha önce yalnızca kablolu seri bağlantı noktaları bağlantı ve bağlantıyı kesme etkinliklerini gönderiyordu. Bluetooth RFCOMM seri bağlantı noktaları artık bağlantı noktası mantıksal olarak bağlandığında veya bağlantısı kesildiğinde bu etkinlikleri dağıtır.
Demo
Kaynaklar
Tasdik
Yorumları için Jack Hsieh ve Reilly Grant'a teşekkürler.