Thông tin cập nhật về Bluetooth RFCOMM trong Web Serial

François Beaufort
François Beaufort

Web Serial API hỗ trợ giao tiếp với các dịch vụ RFCOMM trên các thiết bị Bluetooth Classic đã ghép nối từ Chrome 117 trên máy tính. Ví dụ: điều này cho phép tai nghe không dây sử dụng RFCOMM để quản lý chế độ cài đặt âm thanh và bản cập nhật chương trình cơ sở. Hãy xem bài viết Serial over Bluetooth trên web để tìm hiểu thêm.

Kể từ Chrome 130 cho máy tính, một điểm cải tiến đối với Web Serial API cho phép các ứng dụng web phát hiện thời điểm có cổng nối tiếp RFCOMM Bluetooth mà không cần phải mở cổng. Điều này giúp ngăn các lần kết nối lại không cần thiết khi thiết bị không dây bị ngắt kết nối một cách có chủ ý.

Khi một thiết bị không dây nằm ngoài phạm vi của máy chủ lưu trữ, mọi cổng nối tiếp không dây do một ứng dụng web mở sẽ tự động đóng. Trong những trường hợp như vậy, ứng dụng web có thể cố gắng mở lại cổng bằng phương thức SerialPort open(). Tuy nhiên, nếu thiết bị không dây bị ngắt kết nối có chủ ý (ví dụ: do người dùng ngắt kết nối từ bảng điều khiển của hệ điều hành), thì ứng dụng web không nên mở lại cổng để tránh kết nối lại với thiết bị không dây.

Bằng cách hiển thị trạng thái kết nối logic của thiết bị không dây lưu trữ cổng nối tiếp không dây thông qua một thuộc tính SerialPort connected boolean mới, các ứng dụng web hiện có thể phân biệt những trường hợp này và chỉ kết nối lại nếu việc ngắt kết nối là vô tình.

Thuộc tính SerialPort connected có giá trị true đối với các cổng nối tiếp không dây nếu thiết bị không dây lưu trữ cổng có bất kỳ kết nối nào đang hoạt động với hệ thống. Đối với các cổng nối tiếp có dây, giá trị này là true nếu cổng được gắn vào hệ thống.

Đoạn mã sau đây cho biết cách kiểm tra những thiết bị hiện có và có khả năng tự động kết nối với chúng.

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.
  }
}

Trước đây, chỉ các cổng nối tiếp có dây mới gửi các sự kiện connectdisconnect. Giờ đây, các cổng nối tiếp RFCOMM Bluetooth sẽ gửi những sự kiện này khi cổng được kết nối hoặc ngắt kết nối một cách logic.

Bản minh hoạ

Bản minh hoạ đã kết nối SerialPort.

Tài nguyên

Lời cảm ơn

Cảm ơn Jack Hsieh và Reilly Grant đã đánh giá.