Webhooks กับ WebSockets: ต่างกันอย่างไร

Webhooks กับ WebSockets: ต่างกันอย่างไร

Webhooks และ WebSockets เป็นสองเทคโนโลยีการพัฒนาเว็บไซต์ที่ผู้คนมักสับสน เว็บแอปพลิเคชั่นที่ทันสมัยมากมายใช้ประโยชน์จากทั้ง Webhooks และ WebSockets แม้ว่าจะแตกต่างกันมาก แต่ Webhooks และ WebSockets ต่างก็ระบุที่อยู่การสื่อสารในเว็บแอปพลิเคชัน





Webhooks และ WebSockets คืออะไร? อะไรคือสิ่งที่ทำให้พวกเขาแตกต่าง?





Webhooks คืออะไรและทำงานอย่างไร

คุณสามารถมองว่า Webhook เป็น “คำขอ HTTP ที่ทริกเกอร์โดยเหตุการณ์” สิ่งนี้หมายความว่า? Webhook คือการดำเนินการเรียกกลับ HTTP ที่มักถูกทริกเกอร์โดยเหตุการณ์ในเซิร์ฟเวอร์ ยังไม่หมดแค่นั้น โดยปกติแล้วจะส่งข้อมูลผ่าน URL ที่กำหนดค่าไว้ล่วงหน้าไปยังเซิร์ฟเวอร์อื่น สิ่งนี้ทำให้เกิดแนวคิดว่า Webhooks เป็นวิธีการสื่อสารแบบ 'เซิร์ฟเวอร์ถึงเซิร์ฟเวอร์'





เพื่อให้เข้าใจกลไกการทำงานของ Webhooks ได้ดีขึ้น ให้พิจารณาเว็บแอปพลิเคชันที่ใช้ API ของ Stripe เพื่อรับการชำระเงิน เมื่อใดก็ตามที่ลูกค้าชำระเงิน Stripe จะได้รับเงิน แต่แอปของคุณไม่รู้เลย นี่คือที่มาของ Webhooks พิจารณาภาพด้านล่าง:

  การแสดงภาพวิธีการทำงานของ Webhooks

Stripe ต้องการให้คุณระบุ URL ปลายทางของ Webhook เพื่อส่งข้อมูลการชำระเงินของลูกค้าไปยังเซิร์ฟเวอร์ของคุณเมื่อมีการทริกเกอร์เหตุการณ์การชำระเงินใหม่ จากนั้นเซิร์ฟเวอร์ของคุณจะได้รับข้อมูล ดำเนินการกับข้อมูลนั้น และบันทึกข้อมูลถาวรลงในฐานข้อมูล



WebSockets คืออะไรและทำงานอย่างไร

WebSocket เป็นโปรโตคอลที่คุณมักใช้กับ JavaScript . มันสร้างช่องทางการสื่อสารสองทาง ถาวร สองทิศทาง มันทำมากกว่าเดียว การเชื่อมต่อระหว่างพอร์ต TCP สองพอร์ต จากไคลเอนต์ (เบราว์เซอร์) ไปยังเซิร์ฟเวอร์ แอปพลิเคชั่นยอดนิยมของ WebSockets อยู่ในแอปพลิเคชั่นแชทเช่น WhatsApp

แม้ว่า Webhooks จะใช้ HTTP (เช่น ใช้ประโยชน์จากโปรโตคอล HTTP) WebSocket เป็นโปรโตคอลทั้งหมดโดยอิงตาม TCP เอง เช่นเดียวกับ HTTP WebSockets มีประโยชน์อย่างมากเมื่อทำงานกับแอปพลิเคชันการสตรีมข้อมูลไคลเอ็นต์เซิร์ฟเวอร์ที่มีเวลาแฝงต่ำ





คุณสามารถบรรลุเวลาแฝงต่ำด้วยการเชื่อมต่อ WebSocket เนื่องจากยังคงเปิดระหว่างธุรกรรม ซึ่งแตกต่างจาก HTTP เริ่มต้น ซึ่งช่วยให้ข้อมูลไหลลื่นระหว่างทั้งสองฝ่ายได้อย่างราบรื่น

  การสร้างภาพ websockets

ก่อน WebSockets นักพัฒนาใช้วิธีการต่างๆ ในการรับข้อมูลแบบเรียลไทม์ผ่าน HTTP แม้ว่าพวกเขาจะอยู่มาระยะหนึ่งแล้ว แต่ก็ต้องทนทุกข์ทรมานจากข้อจำกัด





ตัวอย่างเช่น การโพลแบบยาวต้องการให้ไคลเอ็นต์ส่งคำขอใหม่ไปยังเซิร์ฟเวอร์ในช่วงเวลาที่กำหนดเสมอ ซึ่งหมายความว่าเมื่อมีข้อมูลใหม่ในเซิร์ฟเวอร์ ข้อมูลดังกล่าวจะส่งคืน แต่ถ้าไม่มี คำขอก็จะสูญเปล่าอย่างมีประสิทธิผล

ต่างจาก Webhooks ปลายด้านใดด้านหนึ่งของการเชื่อมต่อ WebSocket สามารถส่งข้อมูลไปยังอีกด้านหนึ่งได้ นี่เป็นเหตุผลหนึ่งที่ WebSockets เสนอข้อได้เปรียบด้านความเร็วอย่างมาก โดยเฉพาะอย่างยิ่งเมื่อมีการส่งข้อมูลจากเซิร์ฟเวอร์ไปยังไคลเอนต์ แอปที่ใช้ WebSockets ควรได้รับประโยชน์จากเวลาแฝงต่ำเมื่อดึงข้อมูลจากเซิร์ฟเวอร์

คุณสามารถใช้ WebSockets ผ่าน TLS ได้เช่นเดียวกับ HTTP สิ่งนี้จะรักษาความปลอดภัยข้อมูลที่คุณส่ง ช่วยบรรเทา การโจมตีแบบคนกลาง . แม้แต่การเชื่อมต่อแบบถาวรก็ยังคงปลอดภัยด้วยวิธีการนี้ คุณไม่ต้องกังวลว่าผู้โจมตีจะขโมยข้อมูลหรือการสื่อสารที่เสียหาย

คุณควรใช้ Webhooks เมื่อใด

Webhooks และ WebSockets ตั้งเป้าที่จะใช้วิธีการสื่อสารแบบเรียลไทม์ที่ดีกว่าบนเว็บ อย่างไรก็ตาม พวกเขาทำในรูปแบบที่แตกต่างกันโดยสิ้นเชิง บ่อยครั้งอาจเป็นเรื่องยากที่จะตัดสินใจว่าเทคโนโลยีใดในสองสิ่งนี้ที่คุณควรใช้ในแอปพลิเคชันของคุณ คุณควรใส่ใจกับจุดแข็งและจุดอ่อนของพวกเขาอย่างรอบคอบเพื่อดูว่าข้อใดตรงตามความต้องการของคุณมากที่สุด

คุณควรเลือก Webhooks บน WebSockets เมื่อใด

  • เมื่อใช้ API คุณไม่ได้เป็นเจ้าของ พิจารณาตัวอย่าง Stripe จากภาพประกอบ Webhook ก่อนหน้านี้ Stripe เป็นผู้ให้บริการชำระเงิน และแอปพลิเคชันของคุณสามารถสร้างจาก API ของพวกเขาได้เท่านั้น คุณไม่สามารถควบคุม Stripe ได้ คุณจึงไม่สามารถสร้างเซิร์ฟเวอร์ WebSocket ในตอนท้ายได้ ในกรณีเช่นนี้ คุณควรใช้ Webhooks
  • หากแอปของคุณเป็นเซิร์ฟเวอร์ที่ต้องสื่อสารกับเซิร์ฟเวอร์อื่น วิธีที่ดีที่สุดคือใช้ Webhooks นี่คือระบบการสื่อสารแบบ 'เซิร์ฟเวอร์ถึงเซิร์ฟเวอร์' ในอุดมคติ
  • Webhooks ไม่ใช่แบบสองทิศทางหรือแบบต่อเนื่อง คุณควรใช้ Webhooks เมื่อแอปพลิเคชันของคุณไม่คาดหวังข้อมูลการตอบกลับผ่านช่องทางเดียวกันเท่านั้น
  • เป็นที่น่าสังเกตว่า Webhooks เป็นวิธีที่เหมาะที่สุดสำหรับการทำงานของเซิร์ฟเวอร์ที่ทำงานเป็นฟังก์ชันแบบไร้เซิร์ฟเวอร์ ตัวอย่าง ได้แก่ AWS Lambda และฟังก์ชันระบบคลาวด์ของ Google

คุณสามารถทดลองกับ Webhooks บน webhook.site . ไซต์นี้ช่วยให้คุณเห็นว่าข้อมูลที่ Webhook ส่งไปยังแอปพลิเคชันของคุณเป็นอย่างไร มีประโยชน์มากที่จะเข้าใจธรรมชาติของการสื่อสารของ Webhook ก่อนที่คุณจะพยายามปรับใช้ปลายทางในแอปพลิเคชันของคุณ

คุณควรใช้ WebSockets เมื่อใด

แอปพลิเคชันแบบเรียลไทม์ ระบบการแจ้งเตือน และระบบแบ่งปันข้อมูลสดเป็นแอปพลิเคชันทั่วไปของ WebSockets โปรดทราบว่าด้วย WebSockets ช่องสัญญาณการเชื่อมต่อจะต้องเปิดอยู่เสมอ โปรโตคอลนี้ควรใช้เมื่อคุ้มค่าเท่านั้น

วิธีทำสติกเกอร์สำหรับโทรเลข
  • คุณควรใช้ WebSockets เมื่อแอปพลิเคชันของคุณแลกเปลี่ยนข้อมูลระหว่างไคลเอนต์และเซิร์ฟเวอร์อย่างต่อเนื่อง ตัวอย่างเช่น ในแอปพลิเคชันการแชร์ตำแหน่งแบบสด ตำแหน่งของผู้ใช้จะได้รับการอัปเดตอย่างต่อเนื่องทั้งบนเซิร์ฟเวอร์และไคลเอ็นต์ขณะย้าย WebSockets ทำให้สิ่งนี้เป็นไปได้
  • ในแอปพลิเคชันการสื่อสารมัลติมีเดียเช่น WhatsApp WebSocket เป็นโปรโตคอลการสื่อสารในอุดมคติ ช่วยให้สามารถแลกเปลี่ยนข้อมูลแบบสองทิศทางได้อย่างรวดเร็ว ซึ่งเป็นศูนย์กลางของแอปประเภทนี้
  • คุณควรใช้ WebSockets ในแอปพลิเคชันที่ใช้ฟีดแบบเรียลไทม์ เช่น Livescore เว็บไซต์นี้แชร์การอัปเดตการแข่งขันฟุตบอลสดที่เกิดขึ้นตามเวลาจริง แต่ทำได้โดยไม่จำเป็นต้องส่งคำขอใหม่หรือกำหนดให้คุณต้องรีเฟรชเบราว์เซอร์
  • กรณีอื่นๆ ที่คุณควรใช้ WebSockets ได้แก่ แอปสตรีมวิดีโอ/เสียงสด ระบบแจ้งเตือนสด และเกมแบบเรียลไทม์สำหรับผู้เล่นหลายคน นอกจากนี้ยังมีประโยชน์ในแอปพลิเคชันการแก้ไขร่วมกัน เช่น Google Docs, Notion เป็นต้น

Webhooks และ WebSockets ต่างกัน

เป็นที่ชัดเจนว่าแม้ว่า Webhooks และ WebSockets จะแก้ปัญหาที่คล้ายกัน แต่ก็ไม่เหมือนกันและแต่ละกรณีก็มีกรณีการใช้งานเฉพาะของตัวเอง Webhooks เป็นการเรียกกลับแบบทิศทางเดียวที่ทริกเกอร์เหตุการณ์ตามโปรโตคอล HTTP เทคโนโลยี WebSocket เป็นโปรโตคอลแบบสแตนด์อโลน ซึ่งช่วยให้สามารถแลกเปลี่ยนข้อมูลแบบสองทิศทางโดยไม่ต้องร้องขอ

สิ่งสำคัญคือต้องระบุความต้องการของคุณเสมอเมื่อสร้างแอปพลิเคชันเพื่อหลีกเลี่ยงการสูญเสียทรัพยากร ในบางกรณี คุณควรเลือกใช้ Webhooks เนื่องจากบางครั้ง WebSockets อาจมีข้อจำกัดด้านต้นทุน ตรวจสอบให้แน่ใจว่าคุณใช้เฉพาะเมื่อจำเป็นเท่านั้น