WebSocket

WebSocket là một giao thức truyền tin dựa trên kết nối TCP. Giao thức WebSocket tuân theo tiêu chuẩn IETFRFC 6455[1] năm 2011 và WebSocket API sử dụng trên Web IDL đang được W3C chuẩn hóa. WebSocket API cho phép mở phiên giao tiếp tương tác hai chiều giữa trình duyệt của người dùng và máy chủ. Sử dụng giao thức này, bạn có thể gửi tin nhắn đến máy chủ và nhận các phản hồi theo hướng sự kiện mà không cần phải gửi gói tin thăm dò đến máy chủ để có hồi đáp.

Mặc dù cùng hoạt động trên các cổng 443 và 80 tương tự như HTTP nhưng WebSocket và HTTP là hai giao thức khác nhau. Cả hai giao thức đều nằm ở lớp 7 trong mô hình OSI và phụ thuộc vào TCP ở lớp 4. RFC 6455 tuyên bố rằng WebSocket "được thiết kế để hoạt động trên các cổng HTTP 443 và 80 nhằm mục đích hỗ trợ hoạt động trên HTTP proxy và lớp trung gian khác".[2]

Giao thức chuẩn thông thường của WebSocket là ws://, giao thức secure mã hóa là wss://. Gói tin giao tiếp được hỗ trợ ở cả dạng text và binary. Mặc dù được thiết kế để triển khai trên trình duyệt cho các ứng dụng Web nhưng Websocket vẫn có thể dùng trong các loại ứng dụng khác kể cả các ứng dụng trên các thiết bị di động. Nhờ là giao thức truyền tin dễ sử dụng, có độ trễ thấp và dễ xử lý lỗi, Websocket thường được sử dụng cho những trường hợp yêu cầu trao đổi real-time như ứng dụng chat, bảng giá chứng khoán hay các biểu đồ động.[3]

Giao thức con sử dụng WebSocket

[sửa | sửa mã nguồn]

Giao thức WebSocket hỗ trợ sử dụng giao thức con. Phía máy khách có thể yêu cầu máy chủ sử dụng một giao thức con cụ thể bằng cách thêm trường Sec-WebSocket-Protocol vào header trong gói tin bắt tay của nó. Nếu nó được máy chủ chấp nhận, máy chủ máy chủ cũng sẽ trả lại giá trị tương ứng về giao thức con đã chọn trong phản hồi của nó để kết nối được thiết lập.[4]

Triển khai trên trình duyệt

[sửa | sửa mã nguồn]

Giao thức WebSocket tương thích với hầu hết các trình duyệt mới, nó được triển khai trên các trình duyệt từ các phiên bản Firefox 7, Safari 6, Google Chrome 14, Opera 12.10 và Internet Explorer 10.[5]

Mặc dù ở một số trình duyệt phiên bản cũ hơn có thể vẫn hỗ trợ WebSocket nhưng không đầy đủ, kém an toàn hơn giao thức đã được triển khai trong các phiên bản trên hoặc bị vô hiệu hóa do có các lỗ hổng bảo mật như trong Firefox 4 và 5,[6] và Opera 11.[7]

Ví dụ triển khai bằng JavaScript

[sửa | sửa mã nguồn]
// Tạo đối tượng WebSocket mới với URI wss là tham số
const socket = new WebSocket('wss://game.example.com/ws/updates');

// Kích hoạt khi kết nối WebSocket được mở
socket.onopen = function () {
  setInterval(function() {
    if (socket.bufferedAmount == 0)
      socket.send(getUpdateData());
  }, 50);
};

// Kích hoạt khi nhận dữ liệu qua WebSocket
socket.onmessage = function(event) {
  handleUpdateData(event.data);
};

// Kích hoạt khi kết nối WebSocket đóng lại
socket.onclose = function(event) {
  onSocketClose(event);
};

// Kích hoạt khi kết nối WebSocket bị đóng do lỗi
socket.onerror = function(event) {
  onSocketError(event);
};

Tham khảo

[sửa | sửa mã nguồn]
  1. ^ “RFC 6455 - The WebSocket Protocol”. datatracker.ietf.org. Lưu trữ bản gốc ngày 24 tháng 3 năm 2022. Truy cập ngày 25 tháng 3 năm 2022.
  2. ^ Fette, I.; Melnikov, A. (2011). “The WebSocket Protocol”. doi:10.17487/rfc6455. ISSN 2070-1721. Bản gốc lưu trữ ngày 11 tháng 1 năm 2022. Truy cập ngày 11 tháng 1 năm 2022. Chú thích journal cần |journal= (trợ giúp)
  3. ^ Pimentel, Victoria; Nickerson, Bradford G. (tháng 7 năm 2012). “Communicating and Displaying Real-Time Data with WebSocket”. IEEE Internet Computing. 16 (4): 45–53. doi:10.1109/MIC.2012.64. ISSN 1941-0131. Bản gốc lưu trữ ngày 11 tháng 1 năm 2022. Truy cập ngày 11 tháng 1 năm 2022.
  4. ^ “Protocol upgrade mechanism - HTTP | MDN”. developer.mozilla.org (bằng tiếng Anh). Lưu trữ bản gốc ngày 13 tháng 1 năm 2022. Truy cập ngày 11 tháng 1 năm 2022.
  5. ^ “WebSocket - Web APIs | MDN”. developer.mozilla.org (bằng tiếng Anh). Lưu trữ bản gốc ngày 11 tháng 1 năm 2022. Truy cập ngày 11 tháng 1 năm 2022.
  6. ^ “WebSocket disabled in Firefox 4 – Mozilla Hacks - the Web developer blog”. Mozilla Hacks – the Web developer blog (bằng tiếng Anh). Lưu trữ bản gốc ngày 11 tháng 1 năm 2022. Truy cập ngày 11 tháng 1 năm 2022.
  7. ^ “Regarding WebSocket”. Opera blogs. Lưu trữ bản gốc ngày 9 tháng 5 năm 2011.
Chúng tôi bán
Bài viết liên quan
Câu truyện đằng sau đôi tất ướt và điệu nhảy của Ayaka
Câu truyện đằng sau đôi tất ướt và điệu nhảy của Ayaka
Story Quest của Ayaka có một khởi đầu rất chậm, đa số là những cuộc hội thoại giữa Ayaka và các NPC trong thành Inazuma
So sánh ưu khuyết Mẫu Đạm Nguyệt và Demon Slayer Bow
So sánh ưu khuyết Mẫu Đạm Nguyệt và Demon Slayer Bow
Cung rèn mới của Inazuma, dành cho Ganyu main DPS F2P.
Yuki Tsukumo có thể đấm bay thực tại?
Yuki Tsukumo có thể đấm bay thực tại?
Tìm hiểu về “sunyata” hay “Hư không” dựa trên khái niệm cơ bản nhất thay vì khai thác những yếu tố ngoại cảnh khác ( ví dụ như hiện tượng, tôn giáo, tâm thần học và thiền định)
Extraordinary Ones: Game MOBA hoạt hình vui nhộn
Extraordinary Ones: Game MOBA hoạt hình vui nhộn
Extraordinary Ones với phong cách thiết kế riêng biệt mang phong cách anime