SOCKET.IO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Error Handling & Debugging trong Socket.io

Trong bài này chúng ta sẽ cùng nhau đi tìm hiểu về cách thức để bắt lỗi cũng như debug trong socket.io. Như các bạn đã biết thì trong bất kể các dự án nào thì cũng không tránh khỏi việc xảy ra bugs không mong muốn.

Việc fix bugs cũng khá là vất vả bởi vậy Socket.io cũng cung cấp cho chúng ta một vài cách thức giúp chúng ta debug.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Error handling

Hầu hết các ví dụ từ đầu seri đến giờ thì chúng ta thường chạy trên local, gần như sẽ không bao giờ gặp các lỗi liên quan đến kết nối, thời gian chờ, v.v. Tuy nhiên, trong xác dự án thực tế, việc xử lý các lỗi đó là vô cùng quan trọng. Do đó, bây giờ chúng ta sẽ cùng nhau tìm hiểu về cách chúng ta có thể xử lý các lỗi kết nối ở phía clients.

API bên phía clients cho chúng ta các sự kiện như :

  • Connect − Khi kết nối thành công
  • Connecting − Khi clients đang kết nối
  • Disconnect − Khi clients bị ngắt kết nối tới server
  • Connect_failed − Kết nối xảy ra lỗi.
  • Error − Khi quá trình gửi event gửi tới server bị lỗi
  • Message − Khi server gửi tin qua send function.
  • Reconnect − Khi đã kết nối lại thành công.
  • Reconnecting − Khi đang kết nối lại
  • Reconnect_failed − Khi kết nối lại bị lỗi.

Mặc định thì khi bị ngắt kết nối tới server, socket.io bên phía clients sẽ kết nối lại liên tuc cho đến khi kết nối thành công. Bạn có thể tinh chỉnh được.

Để xử lý lỗi, chúng ta có thể xử lý các sự kiện này bằng cách sử dụng object socket bên ngoài hàm mà chúng ta đã tạo trên clients:

Ví dụ: Nếu chúng ta có kết nối không thành công, sự kiện 'connect_faild' sẽ được tạo.

socket.on('connect_failed', function() {
   document.write("Xảy ra lỗi kết nối");
})

2. Logging và Debugging

Socket.io sử dụng một module gỡ debug được phát triển bởi chinh tác giả của Express.js, được gọi là debug. Ở phiên bản đầu tiên của Socket thì debug bằng cách log tất cả ra, cách này rất khó debug nên trong phiên bản v1.0 trở đi socket.io bạn có thể debug một cách dễ dàng hơn.

Debug bên phía Server

Cách tốt nhất để debug bên phía server là sử dụng *. Tiến hành debug bằng cách mở terminal và gõ dòng lệnh :

DEBUG=* node app.js

Ở đây mình sẽ tiến hành debug ở file app.js, cách này sẽ tô màu và xuất ra mọi thứ xảy ra các events khiển máy chủ của bạn. Ví dụ, chúng ta có thể xem xét ảnh chụp màn hình sau đây.

socketio debug 1 png

Ở đây bạn sẽ thấy route nào trong express được kích hoạt, hay namespace nào được sử dụng,vv...

Debug bên phía client

Để debug bên phía client bạn chỉ cần đặt một localStorage có tên debug là *, hoặc socket.io-client:socket để giới hạn debug.

Bạn có thể thực hiện bằng cách mở cửa sổ console trên trình duyệt (F12 -> Console) và dán đoạn này vào :

localStorage.debug = '*';

Nếu muốn giới hạn debug thì bạn sử dụng đoạn code này :

localStorage.debug = 'socket.io-client:socket';

Bạn có thể thấy kết quả như trong hình bên dưới :

socketio debug 2 png

Trên đây là những kiến thức cơ bản về Error Handling & Debugging trong Socket.io. Mong bài viết này có thể giúp ích cho bạn cho việc lập trình với NodeJS, cảm ơn bạn đã quan tâm bài viết này.

Cùng chuyên mục:

Crawl dữ liệu website bằng NodeJS cơ bản

Crawl dữ liệu website bằng NodeJS cơ bản

CORS là gì ? Xử lý CORS trong NodeJS

CORS là gì ? Xử lý CORS trong NodeJS

Chắc hẳn trong quá trình xử lý các request tới server thì một vài trường…

Xử lý form trong Express

Xử lý form trong Express

Xây dựng URL trong Express

Xây dựng URL trong Express

Trong bài viết này chúng ta sẽ cùng nhau đi tìm hiểu về cách xây…

Populate trong Mongoose

Populate trong Mongoose

Namespaces & Rooms trong Socket.io

Namespaces & Rooms trong Socket.io

Middleware trong Mongoose

Middleware trong Mongoose

Create / Read / Update / Delete trong Mongoose

Create / Read / Update / Delete trong Mongoose

Validation trong Mongoose

Validation trong Mongoose

Subdocuments trong Mongooose

Subdocuments trong Mongooose

Documents trong Mongoose

Documents trong Mongoose

Trong bài viết này chúng ta sẽ tìm hiểu về documents trong Mongoose

Models trong Mongoose

Models trong Mongoose

SchemaTypes trong Mongoose

SchemaTypes trong Mongoose

Schemas trong Mongoose

Schemas trong Mongoose

Mongoose trong NodeJS

Mongoose trong NodeJS

Làm việc với Table MySQL sử dụng Nodejs

Làm việc với Table MySQL sử dụng Nodejs

Kết nối với MongoDB trong NodeJS

Kết nối với MongoDB trong NodeJS

Giới thiệu MongoDB trong NodeJS

Giới thiệu MongoDB trong NodeJS

Insert / Update / Delete / Select MySQL trong NodeJS

Insert / Update / Delete / Select MySQL trong NodeJS

Broadcasting trong Socket.io

Broadcasting trong Socket.io

Top