ทำไมต้อง Websocket ? ก่อนหาคำตอบของคำถามนี้คงต้องเล่าย้อนกลับไปถึงวิวัฒนาการของเว็บก่อน ถ้านับแล้วน่าจะมี 3 ยุค (ผมเดาเอง) คือ
- Static web เว็บยุคแรกๆ ยังทำอะไรไม่ได้มากนอกจากแสดงข้อมูลสร้างด้วย HTML, CSS เป็นหน้าๆ มีแต่ markup อย่างเดียว ผู้ใช้เข้ามาอ่านได้อย่างเดียวไม่มี interactive ระหว่าง client และ server
- Dynamic web มีภาษาโปรแกรมเข้ามาเกี่ยวข้องแรกๆ เป็น Javascript ทำงานฝั่ง client ต่อมามีการใช้ CGI พวก Perl, PHP เขียนโปรแกรมทำงานฝั่ง server ด้วยทำให้มีการ interactive ระหว่าง client กับ server
- Real-time web ถ้าใช้การ interactive ระหว่าง client-server มันน่าจะอยู่กลุ่มเดียวกันกับข้อ 2 แต่ต่างกันนิดนึงคือมีการรับ-ส่งข้อมูลกันตลอดเวลาถ้า server มีการ PUSH ข้อมูลมาที่ client ก็จะแสดงผลทันทีไม่ต้อง request ไปที่ server ใหม่ การ request ไปที่ server ใหม่เช่นการ refresh หน้าเว็บต้อง request ข้อมูลที่ server ใหม่ทั้งหมดทำให้เกิด overhead ในการรับ-ส่งข้อมูล ถ้ายังนึกไม่ออกให้คิดถึงเฟซบุ๊กที่เวลาเพื่อนคอมเม้นต์ แล้วจะมีแจ้งเตือนเราเกือบจะทันที หรือ inbox ในหน้าเว็บ Gmail เวลามีอีเมลเข้าก็จะแจ้งเตือน unread เกือบจะทันทีเหมือนกัน