WebView-এর জন্য ওয়েব কন্টেন্ট ডেভেলপ করার সময়, আপনার ডেভেলপমেন্ট মেশিনে লোকাল ওয়েব সার্ভার থেকে কন্টেন্ট পরিবেশন করা সহায়ক হতে পারে। আপনি যদি কোনও টেস্ট ডিভাইস বা এমুলেটরে WebView থেকে এই লোকাল সার্ভার অ্যাক্সেস করেন, তাহলে রিমোট সার্ভারে ডেপ্লয় না করেই আপনার পরিবর্তনগুলি দ্রুত দেখতে পারবেন। এই পৃষ্ঠায় WebView থেকে আপনার হোস্ট মেশিনে চলা ওয়েব সার্ভার অ্যাক্সেস করার একাধিক উপায় ব্যাখ্যা করা হয়েছে।
ADB-এর মাধ্যমে রিভার্স পোর্ট ফরওয়ার্ডিং সেট-আপ করা
রিভার্স পোর্ট ফরওয়ার্ডিং সেট-আপ করতে, আপনার ডিভাইসের সাথে যোগাযোগ করার জন্য কমান্ড-লাইন টুল, Android ডিবাগ ব্রিজ (adb) ব্যবহার করতে পারেন। এই ফিচার
আপনার ডিভাইস বা এমুলেটরকে আপনার ডেভেলপমেন্ট মেশিনে localhost-এ চলা একটি ওয়েব সার্ভার অ্যাক্সেস করতে
দেয়।
adb-এ reverse কমান্ড আছে যা ডিভাইসের নির্দিষ্ট পোর্টে আসা অনুরোধ হোস্ট মেশিনের অন্য পোর্টে
ফরওয়ার্ড করতে পারে।
এই ফিচার ব্যবহার করতে, আপনার টার্মিনালে নিম্নলিখিত কমান্ড রান করুন:
adb reverse tcp:DEVICE_PORT tcp:HOST_PORT
নিম্নলিখিতগুলি পরিবর্তন করুন:
DEVICE_PORT: ডিভাইসের পোর্ট যার সাথে আপনার অ্যাপের WebView কানেক্ট করে। যেমন, 8080।HOST_PORT: আপনার ডেভেলপমেন্ট মেশিনের পোর্ট যেখানে আপনার ওয়েব সার্ভার চলছে। যেমন, ৮০৮০ বা ৩০০০।
উদাহরণ:
আপনার লোকাল ডেভেলপমেন্ট সার্ভার যদি ডেভেলপমেন্ট মেশিনের localhost:8080-এ রান করে, তাহলে
নিম্নলিখিত কমান্ড রান করে আপনার ডিভাইস থেকে সেখানে অনুরোধ ফরওয়ার্ড করতে পারবেন:
adb reverse tcp:8080 tcp:8080
এই কমান্ড রান করার পরে, আপনি ডিভাইস বা এমুলেটরে আপনার অ্যাপের WebView-কে
http://localhost:8080-এ পয়েন্ট করতে পারবেন। তারপর WebView, আপনার ডেভেলপমেন্ট মেশিনে localhost:8080-এ চলা ওয়েব সার্ভারের সাথে
কানেক্ট করতে পারবে। এই
পদ্ধতি USB ব্যবহার করে কানেক্ট করা ফিজিক্যাল ডিভাইস এবং Android
এমুলেটর, দুটির ক্ষেত্রেই কাজ করে।
Chrome DevTools পোর্ট ফরওয়ার্ডিং ব্যবহার করা
Chrome DevTools-এর নিজস্ব পোর্ট ফরওয়ার্ডিং ফিচার আছে যা আপনি নিজের ডিভাইস থেকে ডেভেলপমেন্ট মেশিনে অনুরোধ ফরওয়ার্ড করতে ব্যবহার করতে পারেন।
- Chrome DevTools ব্যবহার করে ডিবাগ করুন-এ যেভাবে বর্ণনা করা হয়েছে সেই অনুযায়ী ডিবাগ করার জন্য আপনার ডিভাইস সেট-আপ করুন।
chrome://inspectপৃষ্ঠায়, পোর্ট ফরওয়ার্ড করা... বিকল্প বেছে নিন।- পোর্ট ফিল্ডে, Android ডিভাইসের পোর্ট নম্বর লিখুন যা আপনি ডেভেলপমেন্ট মেশিন অ্যাক্সেস করার জন্য ব্যবহার করতে চান।
- IP অ্যাড্রেস এবং পোর্ট ফিল্ডে, আপনার ডেভেলপমেন্ট মেশিনের ওয়েব সার্ভার অ্যাড্রেস এবং পোর্ট নম্বর লিখুন।
- পোর্ট ফরওয়ার্ডিং চালু করুন চেকবক্স বেছে নিন।
- হয়ে গেছে বিকল্পটি বেছে নিন।
যেমন, আপনি পোর্ট ফিল্ডে 3000 এবং IP অ্যাড্রেস ও পোর্ট ফিল্ডে localhost:8000 লিখলে,
আপনার WebView http://localhost:3000-এ পয়েন্ট করার সময়, এটি localhost:8000-এ লিসেনিং করা
আপনার ডেভেলপমেন্ট মেশিনের ওয়েব সার্ভার অ্যাক্সেস করতে পারবে।
এছাড়াও, আপনার লোকাল ওয়েব সার্ভারের জন্য কাস্টম ডোমেন নাম ব্যবহার করতে পারবেন। এটি কীভাবে করবেন সেই সম্পর্কে নির্দেশাবলীর জন্য, পোর্ট ফরওয়ার্ডিংয়ের মাধ্যমে লোকাল সার্ভার ও Chrome ইনস্ট্যান্স অ্যাক্সেস করুন দেখুন।
Android Emulator-এর পাস-থ্রু IP অ্যাড্রেস ব্যবহার করে কানেক্ট করুন
Android Emulator, আপনার অ্যাপ থেকে ডেভেলপমেন্ট মেশিনে কানেক্ট করার জন্য বিশেষ পাস-থ্রু IP অ্যাড্রেস 10.0.2.2 প্রদান করে।
WebView ডিবাগিংয়ের জন্য এই পদ্ধতি সাজেস্ট করা হয় না কারণ আপনার WebView এই IP অ্যাড্রেসকে
নিরাপদ কনটেক্সট হিসেবে বিবেচনা করবে না। এর ফলে, অনেক ওয়েব প্ল্যাটফর্ম ফিচার (যেমন, সার্ভিস
ওয়ার্কার, ভৌগোলিক অবস্থান এবং ক্যামেরা ও মাইক্রোফোন অ্যাক্সেস) আপনার ওয়েব অ্যাপে
উপলভ্য হবে না। আগে উল্লেখ করা adb reverse এবং Chrome DevTools পোর্ট ফরওয়ার্ড করার পদ্ধতিতে
এই সমস্যা হয় না কারণ এগুলি আপনার WebView-কে বিশ্বস্ত হোস্টনেম localhost-এ
পয়েন্ট করতে দেয়।