Nodejs Socket.io ngưng hoạt động sau vài phút, ai bị lỗi này không
-
Chào mọi người, mình hiện tại đag tập deploy app đơn giản lên centos nhưng đang lỗi. Mình có ứng dụng chat build bằng nodejs và socket.io nhưng cứ 5 phút là tự động tắt không hiểu bị lỗi gì.
Mình dùng putty để kết nối với VPS, sau đó dùng lệnh pm2 để start dự án. Bật Putty thì chat sẽ không tự động mất kết nối, nhưng tắt putty đi thì màn hình chat trắng xóa mặc dù vẫn truy cập vào được. -
Bạn xem server có bị restart k ak bác. Bạn cài đặt cho pm2 tự start sau khi server khởi động lại với lệnh
sudo pm2 startup systemd
Bạn xem bài này để biết thêm chi tiết nhé
How To Set Up a Node.js Application for Production on CentOS 7 -
Hi Ban,
Mình cũng chạy lệnh start tự động kia rồi, nhưng không được bạn à -
Vậy lúc server bị tắt thì bạn log vào putty xong check pm2 monit xem trạng thái app nó thế nào, với xem có thông báo lỗi gì không bạn
-
- Là bạn đang ở dev mode. Thì việc log dev liên tục là điều cần thiết. Bạn thửu log hết data xem.
- Crash ở đây thường sau 1 tg thường là việc có 1 request của bạn sẽ bị throw. Và bạn ko bắt được lỗi này. Solution vẫn là log. 1 phần sẽ là handle errror của nodejs hoặc socket.io thôi.
-
@Phuocanh-Ta Mình bật pm2 monit thì thấy hàm socket.on trên server không hoạt động hay sao ý, hoặc hàm socket.emit ở client khong hoạt đông. pm2 stop xong khởi động lại thì mới được bạn à. Không hiểu lỗi gì. Bạn giúp mình với
-
@Nguyen-Hien Thank bạn, bạn cho mình hỏi cách log dev như nào với
-
@QQ288-Việt-Nam Console.log thoi. Voi dung dung pm2 de run. Node <socket.js file>. Con neu dung Pm2 thi su dung pm2 log app
-
@Nguyen-Hien mình chưa rõ ý bạn lắm. Có nghĩa là không nên dùng pm2 để run app hả bạn. có thư viện nào tốt hơn không bạn
-
@Nguyen-Hien Mình vừa log ra. Hình như không phải lỗi. Vì cứ tầm 5 phút không hoạt động thì socket io tự động disconnect hay sao ý. Sau 5 phút refesh lại page check log thì mình thấy toàn nhảy vào hàm socket.on("disconect",...), Có cách nào giải quyết không bạn ơi
-
@QQ288-Việt-Nam Cái này thì bạn có send socket qua 1 proxy server nào k ?. Kết nối có local k ?. À ý mình là dev mode thì dùng node start.js là được rồi. Khi nào bạn lên production hẵn dùng đến mấy thằng run background.
Bạn có mô hình hết nối. Rồi bạn check ws ở mục network của dev chrome chưa ?. -
@Nguyen-Hien Hi ban, mình cũng không biết proxy server là gì. Hiện tại thì app mình đã deploy lên vps centos 7. App của mình hiện tại chạy cổng 80, nên lúc trỏ tên miền về là chạy thẳng luôn
-
@Nguyen-Hien mình check ở mục ws hiện ra cái này
-
Cái này chắc bạn phải chụp lỗi hoặc code để mọi người xem thử chứ thế này khó đoán bệnh lắm bạn
-
@Phuocanh-Ta Đây là code phía server của mình, bạn xem giúp với
-
mình nghĩ nên check idleTimeout config trước.
pingTimeout (Number): how many ms without a pong packet to consider the connection closed (60000) pingInterval (Number): how many ms before sending a new ping packet (25000).
Còn nếu bạn có xài thông qua nginx, phải check nó lun.
-
@QQ288-Việt-Nam Bạn dùng Pm2 mà có watch app của bạn không vậy
-
@Phuocanh-Ta hi ban, watch app như nào vậy bạn??
-
@QQ288-Việt-Nam PM2 có option watch để xem code thay đổi thì nó tự restart lại app ấy bạn, mà bạn dùng mongoDB hay MySql vậy
-
@kevin3489 mình log ra như này bạn ơi