socket io là một thuật ngữ không còn quá xa lạ với các lập trình viên chuyên nghiệp. Nó được coi là một công cụ để thiết lập kết nối tức thì giữa máy khách và máy chủ cho các ứng dụng thời gian thực. bizfly cloud sẽ hướng dẫn bạn những kiến thức cơ bản về socket io với bài viết này!
Socket io là gì?
Khi truy cập vào một trang web hoặc bất kỳ ứng dụng nào, việc giao tiếp giữa máy chủ (server) và máy khách (client) là rất quan trọng. Để cho cả máy chủ và máy khách biết về những thay đổi của nhau, cần phải sử dụng các phương pháp như ajax, long-polling và short-polling. Máy chủ html5 gửi sự kiện, .. sử dụng các công cụ trên để truyền thông có nhiều nhược điểm, có thể nói kết quả chậm và tiêu tốn nhiều tài nguyên.
Để khắc phục những thiếu sót này, công cụ socket.io đã ra đời, cho phép giao tiếp giữa máy chủ và máy khách diễn ra tức thì với mức sử dụng tài nguyên tối thiểu.
socket io? Nó được coi là một mô-đun trong node.js, được tạo và phát triển bởi những người sáng tạo từ năm 2010. Mục đích lớn nhất của socket io là tạo ra một môi trường tạo điều kiện giao tiếp trên Internet và giúp trả lại giá trị thực của giao tiếp giữa hai bên (thường là giữa máy chủ và máy khách).
Giao tiếp hai chiều giữa máy khách và máy chủ được thực hiện thông qua socket io nếu và chỉ khi máy khách có mô-đun này trong trình duyệt và máy chủ cũng có gói socket io tích hợp sẵn. Các ứng dụng sử dụng socket io thường yêu cầu tốc độ phản hồi ngay lập tức. Một số ví dụ điển hình như xổ số, bóng đá trực tiếp, trò chuyện …
Điều cần bổ sung là socket io không phải là một ngôn ngữ, vì vậy nó phải được sử dụng kết hợp với các ngôn ngữ khác như php, asp.net, nodejs, .. Nếu bạn còn muốn biết socket io là gì thì vào đây, chúng ta cùng nhau tìm hiểu về nó, phần tiếp theo sẽ giới thiệu đặc điểm của nó.
Ưu điểm của socket io là gì?
socket io có nhiều tính năng tuyệt vời như: bảo mật, nhị phân, tự động kết nối, ghép kênh, phát hiện ngắt kết nối … nên việc lựa chọn nó luôn là ưu tiên hàng đầu của lập trình viên. Lập trình viên chuyên nghiệp. Vậy ổ cắm io có những tính năng gì nổi bật? Chúng ta cùng nhau phân tích nhé.
Bảo mật cao
socket io được xây dựng trên engine.io. Đầu tiên nó sẽ bắt đầu phương pháp bỏ phiếu dài để kết nối. Sau đó, nó sử dụng các phương pháp giao tiếp tốt hơn như websockets. Bởi vì nó được thiết lập rất chặt chẽ, khi socket io ra mắt, nó sẽ tự động tạo ra một kết nối an toàn, ví dụ: proxy và bộ cân bằng tải hoặc tường lửa cá nhân và phần mềm chống vi-rút.
Tự động kết nối với máy chủ
Máy chủ tự động kết nối cho socket io là gì? Giả sử kết nối giữa máy khách và máy chủ bị mất trong quá trình khởi động, socket io sẽ tự động gắn kết nối mãi mãi cho đến khi máy chủ phản hồi. Đây là một tính năng có thể tùy chỉnh, vì vậy bạn có thể chọn không tự động kết nối với bất kỳ máy chủ nào bạn muốn.
Mã hóa nhị phân
socket io có thể hỗ trợ mã hóa nhị phân, chẳng hạn như bộ đệm mảng và blob trong trình duyệt hoặc bộ đệm mảng và bộ đệm trong node.js.
Cho phép tạo kênh và phòng
Kênh và khả năng phòng của socket.io là gì? Có thể nói đây là một tính năng rất nổi bật, socket io có thể tạo mối quan hệ giữa các bộ phận hoặc module khác nhau bằng cách tạo ra các kênh độc lập khác nhau. Ngoài tính năng tạo kênh, nó còn hỗ trợ tạo phòng cho khách hàng tham gia để gửi thông báo đến một nhóm người dùng kết nối với thiết bị nhất định. Điều này có thể bao gồm một số apis đơn giản như dưới đây.
Làm thế nào để sử dụng socket io?
Bất kỳ ứng dụng thời gian thực nào sử dụng socket io đều có hai phần: 1 là phía máy chủ và 2 là phía máy khách. Mục đích của 2 phần socket io này là gì?
Phần 1 – Máy chủ:
Bất kỳ 1 máy chủ nào cũng có thể sử dụng nhiều ngôn ngữ lập trình khác nhau như: php, asp.net, nodejs, … Để cài đặt socket io, bạn phải phụ thuộc vào ngôn ngữ lập trình đó. Nếu máy chủ sử dụng ngôn ngữ lập trình nodejs, bạn có thể cài đặt socket io trực tiếp trên cùng một máy chủ. Đối với các ngôn ngữ lập trình khác, tùy từng loại sẽ có cách cài đặt khác nhau. Ví dụ: nếu bạn sử dụng php, bạn phải cài đặt các gói khác hoặc sử dụng máy chủ của riêng bạn để chạy socket io.
Phần 2 – Khách hàng:
Bạn có thể sử dụng js hoặc jquery hoặc bất kỳ ngôn ngữ nào khác để xây dựng giao diện người dùng với socket io.
Tìm hiểu thêm về socket io là gì, những gì cần chuẩn bị và cách cài đặt nó. Thực hiện theo các bước dưới đây theo thứ tự.
Bước 1: Các thiết bị sử dụng socket io, bao gồm 1 máy tính (mac hoặc win).
Bước 2: Tải xuống thư viện socket io vào máy tính của bạn.
Bước 3: Cài đặt socket io trên máy chủ nodejs.
## Chạy ứng dụng:
npm cài đặt
node-server.js
## Xem ứng dụng:
Truy cập: http: // localhost: 3000 / index.html
Đầu tiên, hãy tạo một thư mục demo (hoặc bất kỳ thư mục nào được gọi là). Sau đó mở màn hình terminal với win pc cd vào thư mục demo với mac pc hoặc cmd. Gõ lệnh npm init vào màn hình cmd. Hệ thống sẽ bắt đầu chạy và hỏi tên dự án. Vui lòng đặt tên cho bất kỳ mục nào. Các yêu cầu thiết lập khác bị bỏ qua. Khi được hỏi có hoặc không, hãy nhập có để cài đặt.
Sau khi hoàn tất quá trình cài đặt ở trên, tệp package.json được tạo để cài đặt cấu hình máy chủ.
package.json:
–
{
“tên”: “socket-io-la-gi”,
“phiên bản”: “1.0.0”,
“mô tả”: “”,
“main”: “index.js”,
“script”: {
“test”: “echo ” error: không có bài kiểm tra nào được chỉ định “& amp; & amp; thoát 1”
},
“tác giả”: “”,
“giấy phép”: “isc”,
“phụ thuộc”: {
“ejs”: “^ 3.1.5”,
“Express”: “^ 4.17.1”,
“socket.io”: “^ 3.1.0”
}
}
Để có thể tạo mạng hoặc ứng dụng trực tiếp, bạn nên đặt các gói cần thiết trên máy chủ. Để cài đặt chúng trên máy chủ, trước tiên hãy mở cmd & gt; cd vào thư mục demo đã tạo trước. Sau đó gõ dòng lệnh npm install expressjs socketio và bắt đầu. Sau khi cài đặt cuối cùng thành công, hệ thống sẽ tạo một thư mục node_modules.
Cách hoạt động của socket io
Cơ chế hoạt động của socket io là gì? Việc đầu tiên là khai báo các hoạt động của socket io trên máy chủ và máy khách.
Sau đây là mã khai báo của io socket máy chủ
// Xây dựng máy chủ, sử dụng khai báo socket io
var express = request (“express”);
var app = express ();
app.use (express.static (“công khai”));
var server = request (“http”). server (app);
var io = request (“socket.io”) (máy chủ);
// Bước 2
io.on (“kết nối”, hàm (ổ cắm) {
socket.on (“ngắt kết nối”, function () {});
// Máy chủ lắng nghe dữ liệu từ máy khách
socket.on (“client-send-data”, function (data) {
// Sau khi theo dõi dữ liệu, máy chủ phát lại dữ liệu cho các máy khách khác
console.log (‘máy khách gửi dữ liệu’, dữ liệu);
socket.emit (“Máy chủ gửi dữ liệu”, dữ liệu);
});
});
// Kết thúc bước thứ hai
server.listen (3000);
console.log (‘Máy chủ lắng nghe http://127.0.0.1:3000’)
Đây là mã để khai báo socket io ở phía máy khách.
& lt; html & gt;
& lt; tiêu đề & gt;
& lt; title & gt; demo socketio – trang chủ & lt; / title & gt;
<script
src = “https://code.jquery.com/jquery-1.12.4.min.js”
Integrity = “sha256-zosebrlbnqzlpnkikedrpv7loy9c27hhq + xp8a4mxaq =”
crossorigin = “nặc danh” & gt; & lt; / script & gt;
& lt; script src = Liem = “sha512- + l9l4lmtfny3deglqpprf7jqbhqsq3 / wvonjan / + / l4i0jostgscv0q2tjfvrf4v + zepmduzyiqtg5t4mkr + mq ==” crossoritgin; “
& lt; Tập lệnh & gt;
var socket = io (“http: // localhost: 3000”);
$ (tài liệu) .ready (function () {
$ (“# send”). nhấp vào (function () {
socket.emit (“client-sent-data”, “hello world”);
});
});
& lt; / script & gt;
& lt; / head & gt;
& lt; body & gt;
& lt; div & gt;
& lt; button id = “send” & gt; send & lt; / button & gt;
& lt; / div & gt;
& lt; / body & gt;
& lt; / html & gt;
Vậy cơ chế nhận dữ liệu và truyền dữ liệu của socket io là gì? Để nhận và lắng nghe dữ liệu, hãy sử dụng câu lệnh socket.on (). Để xuất dữ liệu, hãy sử dụng socket.emit ().
Giả sử máy khách gửi bất kỳ cuộc trò chuyện nào đến máy chủ, công việc của máy chủ là viết mã và truyền dữ liệu đó đến máy chủ khác. Mặt khác, máy khách cũng cần viết mã để gửi hoặc nhận dữ liệu từ máy chủ.
Đây là mã phía máy chủ
io.on (“kết nối”, hàm (ổ cắm)
{
socket.on (“ngắt kết nối”, function ()
{
});
// Máy chủ lắng nghe dữ liệu từ máy khách
socket.on (“client-send-data”, function (data)
{
// Sau khi theo dõi dữ liệu, máy chủ phát lại dữ liệu cho các máy khách khác
socket.emit (“Máy chủ gửi dữ liệu”, dữ liệu);
});
});
// Tạo lộ trình, hiển thị chế độ xem
Đây là mã khách hàng
// Máy khách gửi dữ liệu đến máy chủ
$ (tài liệu) .ready (function ()
{
$ (“# send”). nhấp vào (function ()
{
socket.emit (“client-sent-data”, “hello world”);
});
});
& lt; / script & gt;
& lt; / head & gt;
& lt; body & gt;
& lt; h1 & gt; demo socketio & lt; / h1 & gt;
& lt; div & gt;
& lt; button id = “send” & gt; send & lt; / button & gt;
& lt; / div & gt;
& lt; / body & gt;
& lt; / html & gt;
Lưu ý: Đối số đầu tiên cho cả socket.on và socket.emit là tên dòng. Tên hàng có thể tùy ý, nhưng nếu dữ liệu được gửi và nhận trên cùng một hàng, tên hàng phải giống nhau.
Nếu máy khách gửi một sự kiện đến máy chủ, máy chủ sẽ lắng nghe sự kiện đó
Khách hàng gửi
$ (tài liệu) .ready (function ()
{
$ (“# send”). nhấp vào (function ()
{
socket.emit (“client-sent-data”, “hello world”);
});
});
Giám sát máy chủ
socket.on (“client-send-data”, function (data)
{
});
Mô-đun socket io có thể được phát triển thêm trong tương lai để đáp ứng nhu cầu ngày càng tăng về giám sát và tốc độ truyền dữ liệu trên môi trường Internet. Qua bài viết trên, bizfly cloud hi vọng đã giúp các bạn hiểu được phần nào về socket io là gì và cách hoạt động của nó trong phát triển ứng dụng web. Hãy theo dõi các bài viết hay hơn về công nghệ đám mây bizfly.
Theo dõi chia sẻ trên đám mây bizfly