Socket IO là gì? Hướng dẫn sử dụng socket io cơ bản

Socket IO là gì? Hướng dẫn sử dụng socket io cơ bản

Socket IO là 1 thuật ngữ không còn quá xa lạ so với các lập trình viên chuyên nghiệp. Nó được xem là 1 dụng cụ để thực hiện việc connect ngay mau chóng giữa Client & Server cho các ứng dụng Realtime.  sẽ hướng dẫn bạn sử dụng socket io cơ bản qua nội dung này nhé!

Socket IO là gì?

Khi truy cập vào 1 website hoặc ứng dụng bất kỳ thì việc giao tiếp giữa máy chủ (Server) & máy khách (Client) là việc rất trọng yếu. Để máy chủ & máy khách có thể nhận ra được sự biến đổi của đối phương thì cần sử dụng những công thức như AJAX, long-polling, short-polling, & HTML5 server-sent events,..Việc sử dụng cách giao tiếp bằng những dụng cụ kể trên tồn tại nhiều khuyết điểm trong đó có thể nói đến là kết quả trả về chậm & tốn rất là nhiều tài nguyên.

Để giải quyết những khuyết điểm này, dụng cụ socket.io chào đời để giúp cho việc giao tiếp giữa Server & Client diễn ra tức khắc & chiếm ít tài nguyên nhất.

Socket io là gì? Nó được xem là 1 module trong Node.js được nhà sáng chế tạo thành & tiến triển từ năm 2010. Mục đích lớn nhất của Socket io là để tạo môi trường giao tiếp thuận tiện trên Mạng internet giúp trả về các giá trị thực ngay tại thời điểm giao tiếp giữa các bên với nhau (thường là giữa server & client).

Việc giao tiếp 2 chiều giữa máy khách & máy chủ được thực hiện bởi socket io khi & chỉ khi máy khách có module này trong trình duyệt & máy chủ cũng từng tích hợp sẵn gói socket io. Các ứng dụng sử dụng socket io thường đòi hỏi vận tốc comment ngay mau chóng. Một số chẳng hạn điển dường như xổ số, trực tiếp bóng đá, chat…

Cần phải nói thêm rằng socket io không phải là 1 từ ngữ, chính vì vậy nó phải được sử dụng kết phù hợp với những từ ngữ khác như php, asp.net, nodejs,.. Đến đây nếu bạn còn khúc mắc socket io là gì, hãy cùng khám phá tiếp về đặc tính của nó ở phần kế tiếp.

Socket io có những ưu thế gì?

Socket io đưa trong mình nhiều chức năng nổi trội như: bảo mật, binary, auto connect, ghép kênh, phát hiện ngắt connect…Vì vậy việc lựa chọn nó luôn là ưu tiên số 1 của các lập trình viên chuyên nghiệp. Vậy thì những đặc điểm nổi trội của socket io là gì? Hãy bên cạnh nhau nghiên cứu tiếp.

Xem Thêm  Biến - biến javascript trong html

Bảo mật cao

Socket io được xây dựng dựa vào Engine.IO. Nó sẽ khởi chạy phương pháp long-polling trước tiên để connect. Sau đó nó mới sử dụng các phương pháp giao tiếp tốt hơn hẳn như là Websocket ví dụ. Vì được seting chặt chẽ như thế nên khi socket io hiện ra nó sẽ auto tạo những connect bảo mật như là: proxy & cân đối tải hoặc là tường lửa cá nhân & software chống vi rút.

Connect auto tới server

Đặc tính auto connect đến server của socket io là gì? Giả sử trong công cuộc khởi chạy bị mất connect giữa client & server thì socket io sẽ auto bền chặt nối mãi mãi cho đến bao giờ server comment lại. & đây là chức năng có thể tùy chỉnh được nên bạn có quyền chọn không connect auto đến bất kỳ server nào mà mình mong muốn.

Mã hóa nhị phân

Socket io có thể suport mã hóa nhị phân như ArrayBuffer & Blob trên trình duyệt hoặc là ArrayBuffer & Buffer trong Node.js.

Cho phép tạo kênh & phòng

Đặc tính cho phép tạo kênh & phòng của Socket.io là gì? Có thể nói đây là 1 chức năng khá nổi trội khi mà socket io có thể tạo thành mối quan hệ giữa các phần hoặc các module riêng rẽ bằng cách tạo thành những kênh biệt lập khác nhau. Ngoài việc tạo kênh, nó còn làm tạo phòng cho các clients gia nhập với mục đích gửi nhắc nhở đến 1 nhóm người dùng được connect với 1 số thiết bị nào đó ví dụ. Trong số đó có thể nói đến 1 số các API dễ dàng như hình dưới đây.

Sử dụng Socket io như vậy nào?

Bất kể ứng dụng realtime nào sử dụng socket io đều có 2 phần: 1 là phía server & 2 là phía client. Cách sử dụng 2 phần này của socket io là gì?

Phần 1 – Server: 

1 server bất kỳ có thể sử dụng nhiều loại từ ngữ lập trình khác nhau như: php, asp.net, nodejs,…Để thiết lập socket io thì phải lệ thuộc vào từ ngữ lập trình đó. Có thể cài trực tiếp socket io vào cùng 1 server nếu server đó sử dụng từ ngữ lập trình là nodejs. Còn so với các từ ngữ lập trình khác thì tùy vào vào từng loại khác nhau cũng sẽ có cách thiết lập khác nhau. Chẳng hạn nếu sử dụng php thì phải cài thêm những package khác hoặc phải sử dụng server riêng mới có thể chạy được socket io.

Phần 2 – Client: 

Có thể sử dụng js hoặc jquery hoặc bất kỳ 1 từ ngữ nào khác để xây dựng giao diện người dùng với socket io.

Xem Thêm  SQL Server Chuyển đổi ngày giờ thành ngày tháng + Ví dụ - làm thế nào để chuyển đổi ngày giờ thành ngày tháng trong sql

Để hiểu thêm socket io là gì & cần phải chuẩn bị gì, thiết lập thế nào. Hãy theo dõi thứ tự các bước thiết yếu sau đây.

Bước 1: Thiết bị để sử dụng socket io bao gồm 1 laptop (Mac hay Win đều được). 

Bước 2: Tải thư viện socket io về laptop.

Bước 3: Seting socket io trên server nodejs.

##To run app:

npm install

node server.js

##To lượt xem app:

go to: http://localhost:3000/index.html

Trước nhất hãy tạo thư mục dùng thử (hoặc tên bất kỳ). Sau đó mở đầu hình terminal với Mac máy tính hoặc cmd với Win máy tính cd đến thư mục dùng thử. Gõ câu lệnh npm init vào màn hình cmd. Hệ thống sẽ khởi đầu chạy & yêu cầu nhập tên dự án. Hãy đặt tên dự án bất kỳ. Bỏ qua các yêu cầu thiết lậρ khác. Bao giờ hệ thống hỏi Yes or No thì gõ Yes để thiết lập.

Hệ thống sẽ tạo thành file package.json là file dùng để thiết lập cấu hình server sau thời điểm chấm dứt công cuộc thiết lập ở trên. 

package.json: 

————————

{

“name”: “socket-io-la-gi”,

“version”: “1.0.0”,

“description”: “”,

“main”: “index.js”,

“scripts”: {

“test”: “echo “Error: no check specified” && exit 1″

},

“author”: “”,

“license”: “ISC”,

“dependencies”: {

“ejs”: “^3.1.5”,

“express”: “^4.17.1”,

socket.io“: “^3.1.0”

}

}

Để có thể làm website hoặc ứng dụng realtime thì bạn hãy đặt những package thiết yếu lên server. Để thiết lập chúng lên server, trước hết mở đầu hình cmd > cd đến thư mục dùng thử đã tạo ngay lúc trước hết. Sau đó nhập dòng lệnh npm install expressjs socketio & khởi chạy. Cuối cùng hệ thống sẽ tạo thành thư mục node_modules khi thiết lập thành công.

Cách hoạt động của Socket io

Phương châm hoạt động của socket io là gì? Việc trước hết là cần phải khai báo hoạt động của socket io trên cả server lẫn client. 

Dưới đây là code khai báo của socket io trên server

// build server, khai báo sử dụng socket io

var express = require(“express”);

var app = express();

app.use(express.static(“public”));

var server = require(“http”).Server(app);

var io = require(“socket.io”)(server);

// STEP 2

io.on(“connection”, function(socket) {

    socket.on(“disconnect”, function() {});

    //server lắng nghe dữ liệu từ client

    socket.on(“Client-sent-data”, function(data) {

        //sau thời điểm lắng nghe dữ liệu, server phát lại dữ liệu này đến các client khác

        console.log(‘client send data’, data);

        socket.emit(“Server-sent-data”, data);

    });

});

// END STEP 2

server.listen(3000);

console.log(‘Server listen on http://127.0.0.1:3000’)

& đây là code khai báo socket io trên client.

<htmlvàgt;

Xem Thêm  Hoạt động đối tượng JavaScript - Cách thêm / xóa mục khỏi đối tượng JavaScript - loại bỏ đối tượng mục javascript

<headvàgt;

<titlevàgt;Dùng thử Socketio – Homepagevàlt;/titlevàgt;

<script

            src=”https://code.jquery.com/jquery-1.12.4.min.js”

            integrity=”sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=”

            crossorigin=”anonymous”></scriptvàgt;

            <script src= integrity=”sha512-+l9L4lMTFNy3dEglQpprf7jQBhQsQ3/WvOnjaN/+/L4i0jOstgScV0q2TjfvRF4V+ZePMDuZYIQtg5T4MKr+MQ==” crossorigin=”anonymous”></scriptvàgt;

<scriptvàgt;

var socket = io(“http://localhost:3000”);

$(document).ready(function() {

$(“#send”).click(function() {

socket.emit(“Client-sent-data”, “Hello world”);

});

});

</scriptvàgt;

</headvàgt;

<bodyvàgt;

<divvàgt;

<button id=”send”>Sendvàlt;/buttonvàgt;

</divvàgt;

</bodyvàgt;

</htmlvàgt;

Vậy thì cơ chế đảm nhận dữ liệu & truyền dữ liệu của socket io là gì? Để đảm nhận & lắng nghe dữ liệu, hãy sử dụng câu lệnh socket.on(). Còn để phát dữ liệu thì hãy dùng câu lệnh socket.emit().

Giả sử phía client gửi 1 đoạn chat bất kỳ đến server thì trách nhiệm của server hiện giờ là phải viết code & truyền tải dữ liệu đó đến server khác. Mặt khác, phía Client cũng phải viết code để có thể gửi hoặc đảm nhận dữ liệu từ server.

Đây là code phía server

io.on(“connection”, function(socket)

{

socket.on(“disconnect”, function()

{

});

         //server lắng nghe dữ liệu từ client

socket.on(“Client-sent-data”, function(data)

{

//sau thời điểm lắng nghe dữ liệu, server phát lại dữ liệu này đến các client khác

                socket.emit(“Server-sent-data”, data);

});

});

// create route, display lượt xem

Còn đây là code phía client

//client gửi dữ liệu lên server

$(document).ready(function()

{

$(“#send”).click(function()

{

socket.emit(“Client-sent-data”, “Hello world”);

});

});

</scriptvàgt;

</headvàgt;

<bodyvàgt;

<h1vàgt;Dùng thử Socketiovàlt;/h1vàgt;

<divvàgt;

<button id=”send”>Sendvàlt;/buttonvàgt;

</divvàgt;

</bodyvàgt;

</htmlvàgt;

Cảnh báo: Parameter thứ 1 của cả socket.on & socket.emit đều là tên băng thông. Có thể đặt tên băng thông là bất kỳ nhưng nếu mong muốn truyền & nhận dữ liệu chung trong 1 băng thông thì tên băng thông phải giống nhau.

Trường hợp Client gửi buổi lễ lên phía server, server sẽ lắng nghe buổi lễ

Client send

$(document).ready(function()

{

$(“#send”).click(function()

{

socket.emit(“Client-sent-data”, “Hello world”);

});

});

Server listen

socket.on(“Client-sent-data”, function(data)

{

});

Module socket io trong tương lai có thể sẽ tiến triển hơn nữa để thỏa mãn nhu cầu vận tốc lắng nghe & truyền dữ liệu ngày càng cao trong môi trường Mạng internet. Thông qua nội dung trên, BizFly Cloud ao ước giúp bạn phần nào hiểu được socket io là gì & tác dụng của nó trong việc tiến triển ứng dụng website như vậy nào. Cùng theo dõi tiếp các nội dung hay về công nghệ với BizFly Cloud nhé.

BizFly Cloud là nhà sản xuất đa dịch vụ điện toán đám mây được vận hành bởi VCCorp.

BizFly Cloud là một trong bốn công ty thỏa mãn đầy đủ toàn thể tiêu chuẩn, kpi kỹ thuật, an toàn thông tin của nền móng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử do Bộ TTvàamp;TT cấp phép.

Bạn đọc quan tâm đến các biện pháp của BizFly Cloud có thể truy cập tại đây.

SHARE

Fb

Twitter

Viết một bình luận