SOCKET.IO

Socket.IO – Giới thiệu tổng quan

Written by huudoanh

Socket.IO là một thư viện JavaScript cho các ứng dụng web thời gian thực. Nó cho phép giao tiếp hai chiều thời gian thực giữa máy khách và máy chủ web. Socket.IO có hai phần: thư viện phía máy khách chạy trên trình duyệt và thư viện phía máy chủ cho node.js. Cả hai thành phần có API giống hệt nhau.

Ứng dụng thời gian thực

Ứng dụng thời gian thực là một ứng dụng hoạt động trong một khoảng thời gian mà người dùng có thể cảm nhận được ngay lập tức.

Một số ví dụ của ứng dụng thời gian thực:

  • Instant messengers − Ứng dụng Chat giống như Whatsapp, Facebook Messenger, v.v. Bạn không cần làm mới ứng dụng/trang web của mình để nhận tin nhắn mới.
  • Push Notifications − Khi ai đó tag bạn vào trong ảnh trên Facebook, bạn sẽ nhận được thông báo ngay lập tức.
  • Collaboration Applications − Các ứng dụng như google docs, cho phép nhiều người cùng làm việc trên một tài liệu một tài liệu và áp dụng các thay đổi cho tất cả mọi người.
  • Online Gaming − Các trò chơi như Dota, Liên minh huyền thoại, v.v., cũng là một số ví dụ về các ứng dụng thời gian thực.

Tại sao lại sử dụng Socket.IO?

Các socket theo truyền thống là giải pháp mà hầu hết các hệ thống thời gian thực được kiến trúc, cung cấp một kênh liên lạc hai chiều giữa máy khách và máy chủ. Điều này có nghĩa là máy chủ có thể đẩy thông điệp đến máy khách. Bất cứ khi nào một sự kiện xảy ra, ý tưởng là máy chủ sẽ lấy nó và đẩy nó đến các máy khách được kết nối có liên quan.

Socket.IO khá phổ biến, nó được Microsoft Office, Yammer, Zendesk, Trello và nhiều tổ chức khác sử dụng để xây dựng các hệ thống thời gian thực mạnh mẽ. Là một trong những JavaScript framework mạnh nhất trên GitHub và mô-đun NPM (Node Package Manager). Socket.IO có một cộng đồng lớn để hỗ trợ các vướng mắc của bạn khi sử dụng.

ExpressJS

Chúng tôi sẽ sử dụng express để xây dựng máy chủ web mà Socket.IO sẽ làm việc. Bất kỳ node-server-side framework hoặc even node HTTP server nào khác đều có thể được sử dụng. Tuy nhiên, ExpressJS giúp dễ dàng định nghĩa các route và các vấn đề khác.

Nếu bạn chưa làm quen với ExpressJS. Bạn có thể tìm hiểu thêm tại: Loạt bài về ExpressJS