Socket.IO là gì? Cách hoạt động của Socket.IO | BKHOST

Làm thế nào mà những thiết bị máy tính khác nhau hoàn toàn có thể tiếp xúc với nhau ? Trước đây có khá nhiều công cụ tương hỗ nhưng chúng không có giải pháp nào là tuyệt vời. Vì thế, những nhà sản xuất đã tăng trưởng ra Socket. IO – một công cụ được cho phép thiết lập những tiếp xúc hiệu suất cao và nhanh gọn .

Socket io la gi

Trong bài viết này, BKHOST giúp bạn hiểu thêm Socket.IO là gì?, cách hoạt động của nó như thế nào và khi nào nên sử dụng.

Socket. IO là gì ?

Socket.IO là công cụ kết nối mở cho phép máy chủ và máy khách giao tiếp hai chiều với nhau theo thời gian thực. Khi máy chủ có Socket.IO và máy khách có gói Socket.IO trong trình duyệt thì việc liên kết sẽ được thực hiện.

So do su dung socket io

Socket. IO sử dụng Engine. IO để thiết lập liên kết và trao đổi tài liệu tạo điều kiện kèm theo cho việc tiến hành sever của người mua. Engine. IO được sử dụng để tiến hành sever và Engine. IO-client được sử dụng cho máy khách. Ngoài ra, Socket. IO còn dựa trên nền tảng Engine. IO để thiết lập liên kết long-polling trải qua xhr-polling và tăng cấp lên giải pháp liên kết tối ưu hơn .

Socket. IO hoạt động giải trí như thế nào ?

Socket IO hoat dong nhu the nao

Socket. IO sử dụng tính năng tiếp xúc hai chiều để tăng trưởng những ứng dụng trò chuyện. Các tin nhắn gửi về sever sẽ được gửi trực tiếp cho máy khách mà không cần bất kỳ nhu yếu trung gian nào .

Sử dụng Socket. IO để trò chuyện

Máy chủ

Đầu tiên hãy setup node.js, sau đó sử dụng express để đơn giản hóa thiết lập ứng dụng .

Tạo folder mới với đoạn code sau:

$ mkdir Socket.IO-example
cd Socket.IO-example
npm install Socket.IO express

Thiết lập máy chủ và nhập các gói require sau:

const app = require("express")();
const http = require("http").createServer(app);
const io = require("Socket.IO")(http);

Thiết lập một file index.html mà máy chủ gửi về:

app.get("/", (req, res) => res.sendFile(__dirname + "/index.html"));

Thiết lập một connection điều khiển chức năng của Socket.IO:

io.on("connection", function(socket) {
console.log(“socket connected”);
});

Thiết lập cổng 3000 trên máy chủ:

http.listen(3000, () => console.log("listening on http://localhost:3000")

Khởi động ứng dụng.nodeindex.js và mở trang trên trình duyệt.

Máy khách

Thiết lập sever và nhập những gói require sau : Thiết lập một filemà sever gửi về : Thiết lập một connection tinh chỉnh và điều khiển công dụng của Socket. IO : Thiết lập cổng 3000 trên sever : Khởi động ứng dụng. nodeindex.js và mở trang trên trình duyệt .

Thiết lập kết nối socket. IO bằng các lệnh:


Cách nhận tin nhắn qua lại

Máy chủ

Sử dụng hàm io.emit() để gửi tin nhắn từ máy chủ đến máy khách:

io.on("connection", function(socket) {
io.emit(“user connected”);
});

Sử dụng socket.broadcast.emit() để gửi tin nhắn cho tất cả mọi người trừ những người đang ở trong trạng thái kết nối.Sử dụngđể gửi tin nhắn cho toàn bộ mọi người trừ những người đang ở trong trạng thái liên kết .

Hoặc để thêm người nhận cho tin nhắn, sử dụng lệnh sau. Người nhận mới sẽ nhận được những tin nhắn từ lúc bắt đầu được thêm vào:

io.on("connection", function(socket) {
io.emit(“user connected”);
socket.on(“message", function(msg) {
io.emit("message", msg);
});
});

Máy khách

Sử dụng tệp index.html để hiển thị đầu vào và vùng chứa của tin nhắn:





 
   
   
   
   Socket.io Example
 

 
   

Our Socket.io Chat Application

Messages

    Tiếp theo hãy bổ sung một số logic vào


    Các hàm socket.on có hai chức năng event và callback. Nếu máy chủ phát hiện ra các event phù hợp, ngay lập tức lệnh callback sẽ được khởi động bằng cách hiển thị trên màn hình máy chủ.

    Duy trì và quản lý và vận hành Socket. IO

    Tiếp theo hãy bổ sung một số logic vào

    Máy chủ Node. js tạo điều kiện kèm theo giúp thiết lập một ứng dụng tiếp xúc bằng Socket. IO thuận tiện với tính năng tùy chọn thời hạn thực và số lượng giới hạn người dùng ứng dụng. Nếu như bạn muốn thiết lập một ứng dụng tiếp xúc giữa những doanh nghiệp giống như CRM thì Socket. IO sẽ tạo ra những thư viện mạng không đồng điệu làm cho việc liên kết bị gián đoạn, những tài liệu thuận tiện bị đánh cắp. Hơn nữa, socket là một công cụ liên kết mở không có tính năng quản trị sâu về những liên kết của người dùng với mọi sever khác nhau .Giải pháp khắc phục duy nhất đó là sử dụng kho tàng trữ tài liệu bộ nhớ Redis như pub / sub để gửi thông tin cho những sever về số người tham gia hoàn toàn có thể nhận được tin nhắn. Ngoài ra, Socket. IO còn tích hợp với pub / sub và sever để san sẻ thông tin hiệu suất cao hơn .Ngoài sử dụng Redis, bạn cũng hoàn toàn có thể tìm hiểu thêm những công cụ khác như CoreOS. Đây là một loại công cụ cho phép chia nhỏ những đơn vị chức năng trên phần cứng sever và giúp update những phiên bản mới nhanh hơn .Tuy nhiên, có một yếu tố so với WebSockets đó là khi liên kết bị gián đoạn những nhu yếu thăm dò sẽ được gửi về mạng lưới hệ thống hoặc một số ít sever khác với dòng lỗi “ Error during WebSocket handshake : Unexpected response code : 400 ” .Để khắc phục yếu tố này, bạn hoàn toàn có thể sử dụng định tuyến máy khách dựa trên địa chỉ gốc có sẵn hoặc sử dụng cookie. Tài liệu của Socket. IO hoàn toàn có thể xử lý lỗi trong hầu hết những thiên nhiên và môi trường và được xem là giải pháp khắc phục hiệu suất cao .

    Giới hạn của Socket. IO

    Trước khi lựa chọn sử dụng bất kỳ công nghệ nào cho loại sản phẩm cần khám phá về sự thích hợp và nhu yếu của loại sản phẩm đó. Socket. IO có thời hạn liên kết khởi đầu hiệu suất cao hơn so với WebSocket. IO bằng cách sử dụng long-polling và xhr-polling. Để giảm thiểu ngân sách Socket. IO, người dùng hoàn toàn có thể lựa chọn cách chỉ liên kết với WebSockets .

    Máy khách:

    Const socket = io({transports: [“websocket”], upgrade: false});

    Máy chủ:

    io.set("transports", ["websocket"]);

    Máy khách cần tải xuống tệp JavaScript Socket.IO 61,2 KB để bổ sung các thông tin cần thiết.

    Socket. IO trong tương lai

    Máy khách cần tải xuống tệp JavaScript Socket. IO 61,2 KB để bổ trợ những thông tin thiết yếu .Phiên bản Socket. IO V4 chính thức ra đời vào 9/3/2021 là một công cụ quét dọn API có tính năng tương hỗ tăng thời hạn chờ cho những sự kiện, tính cố định và thắt chặt và bản sửa lỗi .Socket. IO tăng trưởng chậm về lượt tải xuống NPM .

    Socket IO trong tuong lai-1

    Sockjs và WS đang tăng trưởng đều đặn và mạnh hơn Socket. IO về lượt tải xuống NPM .

    Socket IO trong tuong lai-2

    Hiện nay, hầu hết những trình duyệt đều có phần “ Can I use ” được cho phép sử dụng WebSockets. Điều này cho thấy rằng WS có tính năng tiêu biểu vượt trội hơn trong việc giải quyết và xử lý liên kết socket trên sever. Tuy nhiên so với máy khách thì phải sử dụng API trình duyệt gốc .

    Socket IO trong tuong lai-3

    Như vậy, công cụ Socket. IO là một lựa chọn tuyệt vời dành cho bạn trong việc thiết lập liên kết hai chiều tương hỗ việc tạo những ứng dụng trò chuyện trở nên đơn thuần và thuận tiện hơn .

    Một vấn đề nan giải của Socket.IO đó là các kết nối nếu không phải là WebSocket thì quá trình thiết lập sẽ trở nên khó khăn và phức tạp hơn. Vì vậy, nhu cầu sử dụng Socket.IO sẽ phụ thuộc vào các mục đích cá nhân về thời gian thực hay hiệu suất hoạt động của dịch vụ và ứng dụng. Ngoài ra, với các hỗ trợ của WebSocket sẽ giúp người dùng có nhiều lựa chọn đối với triển khai gốc hơn.

    Tổng kết về Socket. IO

    Trên đây là toàn bộ những thông tin về Socket.IO và những tính năng mà nó đem lại cho việc xây dựng hệ thống giao tiếp giữa các máy chủ và máy khác. Hy vọng qua đây bạn đã có được những kiến thức để thiết lập Socket.IO cho máy tính một cách hiệu quả.

    Nếu còn có thêm vướng mắc gì về những yếu tố tiếp xúc viễn thông hoặc cần những dịch vụ mạng lưới hệ thống mạng, hãy để lại phản hồi ở bên dưới, BKHOST sẽ vấn đáp bạn trong thời hạn sớm nhất .P. / s : Bạn cũng hoàn toàn có thể truy vấn vào Blog của BKHOST để đọc thêm những bài viết san sẻ kiến thức và kỹ năng về lập trình, quản trị mạng, website, domain, hosting, vps, server, email, … Chúc bạn thành công xuất sắc .