WebSockets เป็นเทคโนโลยีไคลเอนต์-เซิร์ฟเวอร์ที่แพร่หลายซึ่งจะช่วยในการแลกเปลี่ยนข้อความและโต้ตอบแบบทันทีภายในแอปพลิเคชันของคุณโดยสร้างการเชื่อมต่อ TCP แบบ full-duplex อย่างต่อเนื่องระหว่างเซิร์ฟเวอร์และเบราว์เซอร์ของไคลเอ็นต์ การใช้ช่องทางการสื่อสารดังกล่าวส่งผลให้ latency ต่ำมากและเกิดการโต้ตอบที่รวดเร็ว ทำให้มั่นใจได้ว่า streaming ผ่าน proxies และfirewalls ทั้ง upstream และ downstream ในเวลาเดียวกัน
Ruk-Com Cloud จัดเตรียม WebSockets ขั้นสูงและเสริมด้วยการผสานรวมเทคโนโลยีนี้เข้ากับ Shared Load Balancer and NGINX-balancer คุณจึงสามารถใช้งานได้แม้ไม่มี IP address ภายนอกแนบกับเซิร์ฟเวอร์ของคุณโดยการรับ proxy พอร์ตต่างๆที่แอป WebSockets ใช้ไปยังพอร์ตเดียว – 80 สำหรับ HTTP และ 443 สำหรับ HTTPS
วิธีการใช้ WebSockets ที่ง่ายที่สุดสำหรับแอปพลิเคชันคือวาง NGINX balancer ไว้ข้างหน้า – สามารถดูรายละเอียดได้ที่นี่ อย่างไรก็ตามวิธีการดังกล่าวอาจไม่สอดคล้องกับความต้องการของคุณในขณะที่แอปพลิเคชันยังคงต้องการใช้เทคโนโลยีนี้เพื่อนำไปปฏิบัติ ในกรณีนี้เรารองรับ WebSockets อย่างเต็มรูปแบบสำหรับแอปพลิเคชันเซิร์ฟเวอร์ที่มีอยู่ ซึ่งรวมถึง Apache (สำหรับให้บริการแอป PHP, Ruby และ Python) และ NGINX (สำหรับแอป PHP และ Ruby)
กระบวนการรวม WebSockets อาจแตกต่างกันไปในแต่ละแอปพลิเคชัน แต่สำหรับการตั้งค่าฝั่งเซิร์ฟเวอร์ Jelastic ได้จัดเตรียมตัวอย่างการกำหนดค่าสำหรับแต่ละโหนดที่กล่าวถึงข้างต้น ดังนั้นคุณสามารถ uncomment และแก้ไขเล็กน้อยตามข้อกำหนดของแอปพลิเคชันคุณ (เช่น หมายเลข listening port)
การสร้าง Environment และการ Deploy Application
1. คลิกปุ่ม New Environment ด้านบนซ้ายของแดชบอร์ด
2. ภายในหน้าต่าง Environment Wizard ที่ปรากฏขึ้นให้สลับไปที่แท็บภาษาและเลือกแอปพลิเคชันเซิร์ฟเวอร์ที่คุณต้องการ (ยกตัวอย่างแอปพลิเคชัน Apache PHP) จากนั้นเลื่อน cloudlets เพื่อกำหนดจำนวนทรัพยากร ตั้งชื่อ environment ของคุณแล้วคลิก Create
3. ภายในไม่กี่นาที environment ของคุณจะปรากฏในหน้าแดชบอร์ด
4. อัปโหลดและ deploy แอปพลิเคชันของคุณที่ Deployment Manager หรือผ่านที่จัดเก็บระยะไกล GIT/SVN (คุณสามารถดูคำแนะนำเพิ่มเติมได้ที่คู่มือ deployment)
โปรเจกต์ที่คุณทำการ deploy แล้วจะแสดงรายการในส่วนด้านล่างของแผงควบคุม environment
การกำหนดค่าเซิร์ฟเวอร์และแอปพลิเคชัน
WebSockets ภายใน Apache server รองรับโมดูล proxy_wstunnel_module ซึ่งถูกเพิ่มโดยค่าเริ่มต้นเมื่อสร้างเซิร์ฟเวอร์ สำหรับ NGINX server นั้นจะใช้ความสามารถของการฝัง proxy ซึ่งการเชื่อมต่อ WebSockets คล้ายกับวิธีที่ NGINX-balancer ทำ ดังนั้นมาเริ่มต้นกำหนดค่าแอปพลิเคชันของคุณตามขั้นตอนนี้
1. คลิกปุ่ม Config ถัดจากโหนดแอปเซิร์ฟเวอร์ของคุณ
2. ในแท็บ Configuration Manager ทำตามขั้นตอนดังนี้:
- สำหรับ Apache app server
เข้าไปที่ไดเร็กทอรี conf แล้วหาไฟล์ httpd.conf ยกเลิกคอมเมนต์คำสั่งด้านล่างนี้ (ประมาณบรรทัดที่ 962)
<Location /ws>
ProxyPass ws://127.0.0.1:<PORT>
ProxyPassReverse ws://127.0.0.1:<PORT>
</Location>
จากนั้นเปลี่ยนพารามิเตอร์ทั้งสองเป็นหมายเลขพอร์ตที่แอปพลิเคชัน WebSockets ของคุณ listen (เช่น 9000)
ตรวจสอบให้แน่ใจว่าคุณได้กำหนดค่าเหมือนกับรูปภาพนี้
กดปุ่ม Save ด้านบนเพื่อบันทึก
- สำหรับ NGINX app server
เข้าไปที่ไดเร็กทอรี conf เลือกไฟล์ nginx.conf แล้วค้นหา #Websocket และยกเลิกคอมเมนต์คำสั่งต่อไปนี้:
upstream websocket {
server 127.0.0.1:<PORT>;
}
…
location /ws {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
จากนั้นแทนที่ค่า <PORT> ด้วยหมายเลขพอร์ตที่เกี่ยวข้องและกดปุ่ม Save
3. ทั้งหมดนี้คือการกำหนดค่าเซิร์ฟเวอร์ที่คุณต้องทำ จากนั้นกำหนดค่าแอปพลิเคชันที่คุณ deploy โดยเข้าไปที่ไฟล์การกำหนดค่าของแอปพลิเคชันคุณเพื่อตั้งค่า WebSockets และปรับ ws path ที่มีอยู่ในไฟล์ตามรูปแบบถัดไป:
ws://{env_domain}{path_to_ws_file}
โดยที่
- {env_url} แทนที่ด้วยโดเมนของ environment คุณ (สามารถดูได้ที่ใต้ชื่อ environment ที่แดชบอร์ด)
- {path_to_ws_file} จำเป็นต้องเปลี่ยนเส้นทางไปยังไฟล์ซึ่งควรเข้าถึงได้เมื่อสร้างการเชื่อมต่อ WebSockets
4. Save และ Restart แอปพลิเคชันเซิร์ฟเวอร์ของคุณ
5. หลังจากรีสตาร์ทเสร็จแล้วคลิกปุ่ม Open in Browser เพื่อเรียกใช้แอปพลิเคชันของคุณในแท็บเบราว์เซอร์ใหม่
6. คุณจะเห็นว่าแอปพลิเคชันทำงานได้แล้ว
คุณจะได้รับประโยชน์จากการถ่ายโอนข้อความที่รวดเร็วอย่างเห็นได้ชัดจากการใช้ WebSockets Protocol