WebUSB API, নন-স্ট্যান্ডার্ড ইউনিভার্সাল সিরিয়াল বাস (USB) সামঞ্জস্যপূর্ণ ডিভাইসগুলোকে ওয়েবের সাথে সংযুক্ত করে। এই পৃষ্ঠাটি API-এর সেই দিকগুলো বর্ণনা করে যা বিশেষত এক্সটেনশনগুলোর জন্য প্রযোজ্য। WebUSB API- এর সম্পূর্ণ বিবরণের জন্য MDN দেখুন।
এক্সটেনশনে উপলব্ধতা
ক্রোম ১১৮ বা তার পরবর্তী সংস্করণ।
অনুমতি
কোনো ম্যানিফেস্ট ফাইলের অনুমতির প্রয়োজন নেই; তবে WebUSB ব্রাউজারের ব্যবহারকারী অনুমতির প্রবাহকে সক্রিয় করে।
প্রকাশ
এই এপিআই-এর জন্য কোনো ম্যানিফেস্ট কী-এর প্রয়োজন নেই।
সহায়ক প্রেক্ষাপট
এই API প্রায় যেকোনো প্রেক্ষাপটে ব্যবহার করা যেতে পারে; WebUSB.requestDevice() পদ্ধতিটি এক্সটেনশন সার্ভিস ওয়ার্কার-এ ব্যবহার করা যায় না। বিস্তারিত জানতে পরবর্তী অনুচ্ছেদ দেখুন।
যখন এই এপিআইটি কোনো এক্সটেনশন সার্ভিস ওয়ার্কারে ব্যবহার করা হয়, তখন ডিভাইসগুলোর সংযোগ সেশন সার্ভিস ওয়ার্কারটিকে সচল রাখে।
ক্রোম এক্সটেনশনের পার্থক্য
যদিও WebUSB এক্সটেনশন সার্ভিস ওয়ার্কারদের জন্য উপলব্ধ, WebUSB.requestDevice() ফাংশনটি, যা একটি প্রমিজ রিটার্ন করে এবং সেটি একটি USBDevice ইনস্ট্যান্স দিয়ে রিজলভ হয়, কোনো এক্সটেনশন সার্ভিস ওয়ার্কারের মধ্যে কল করা যায় না। এই সমস্যাটি এড়ানোর জন্য, এক্সটেনশন সার্ভিস ওয়ার্কারটি ছাড়া অন্য কোনো এক্সটেনশন পেজ থেকে requestDevice() কল করুন এবং এক্সটেনশন সার্ভিস ওয়ার্কারটিকে একটি মেসেজ পাঠান।
নিম্নলিখিত কোডটি একটি সাধারণ প্যাটার্ন অনুসরণ করে, যেখানে ব্যবহারকারীর অঙ্গভঙ্গির প্রয়োজন হয় এমন একটি অনুমতি প্রক্রিয়ার অংশ হিসেবে requestDevice() কল করা হয়। ডিভাইসটি প্রাপ্ত হলে এটি সার্ভিস ওয়ার্কারের কাছে একটি বার্তা পাঠায়, যা পরবর্তীতে getDevices() ব্যবহার করে ডিভাইসটি পুনরুদ্ধার করতে পারে।
popup.js:
myButton.addEventListener("click", async () => {
await navigator.usb.requestDevice({
filters: [{ vendorId: 0x1234, productId: 0x5678 }],
});
chrome.runtime.sendMessage("newDevice");
});
সার্ভিস-ওয়ার্কার.জেএস
chrome.runtime.onMessage.addListener(async (message) => {
if (message === "newDevice") {
const devices = await navigator.usb.getDevices();
for (const device of devices) {
// open device connection.
await device.open();
}
}
});