Ví dụ Error Handling, Debugging Socket.io trong NodeJs

Ví dụ Error Handling, Debugging Socket.io trong NodeJs là vấn đề được nhiều lập trình viên quan tâm, bởi những kiến thức trên trường lớp là không đủ, vì vậy bài Ví dụ Error Handling, Debugging Socket.io trong NodeJs sẽ chia sẻ tới bạn nhiều thông tin hữu ích

Mọi người vẫn hỏi tôi về việc học lập trình nói chung và NodeJS nói riêng có cần năng khiếu hay quá khó để tiếp cận hay không. Thì tôi có thể trả lời rằng, học lập trình cũng như việc bạn học tiếng Anh hay bất kỳ một ngôn ngữ khác, bởi lập trình...là ngôn ngữ của máy tính, để máy tính đọc và máy tính thực hiện theo yêu cầu của mình, bạn thích là học được.

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.

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.

Ở đâ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 :

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.

Hy vọng với bài viết về Ví dụ Error Handling, Debugging Socket.io trong NodeJs đã giải đáp giúp bạn phần nào về kiến thức lập trình NodeJS. Như tôi đã nói, ngôn ngữ lập trình không quan trọng bằng tư duy giải thuật, tư duy logic để giải quyết vấn đề.

Với những năm trước đây, lập trình viên là một cái nghề khó và kén chọn người học, đồng nghĩa với việc thu nhập hàng tháng của các lập trình viên luôn cao. Còn những năm gần đây, thì lập trình là môn học phổ thông, và ai cũng nên học một ngôn ngữ lập trình nào đó.

Nếu bạn còn bất kỳ câu hỏi nào trong việc học lập trình online, hãy gửi yêu cầu cho tôi qua email hoidapcode.com@gmail.com hoặc để lại comment bên dưới, tôi sẽ giải đáp trong vòng 24 giờ!

Blog hoidapcode.com là blog được tổng hợp tự động các bài học, thông tin về lập trình trên mạng internet. Nếu bạn có ý kiến hoặc đóng góp về bài viết này, hãy liên hệ với tôi!