nguyenkha / kcoin-blockchain

KCoin blockchain reference implementation
https://api.kcoin.club/
MIT License
60 stars 8 forks source link

websocket bị close connection #29

Open TruongLuan1996 opened 6 years ago

TruongLuan1996 commented 6 years ago

Chào mọi người, mình đang bị tình trạng websocket connect sau một thời gian thì bị close connection( dù đã set 30s gửi 1 message để giữ kết nối như thầy đã nói). Không biết có ai bị tình trạng tương tự không?

nguyenkha commented 6 years ago

Bạn có thể cho biết thời gian bạn kết nối được WebSocket trong bao lâu thì bị disconnect?

TruongLuan1996 commented 6 years ago

Thưa thầy, nó không xác định nhưng em thấy để lâu lắm mới bị, thường là khuya mới bị. Hôm qua e để cả ngày cũng không sao nên em cũng không biết bị vấn đề gì

nguyenkha commented 6 years ago

Vậy là không có gì bất thường cả bạn nhé:

Trong một số tình huống WebSocket có thể bị ngắt kết nối do mạng gặp vấn đề, hoặc server chạy blockchain phải restart do mình deploy (ít khi xảy ra). Giả sử ràng không phải do timeout mà mất kết nối WebSocket thì phải làm sao?

  1. Kiểm tra số block đang có và số block trên blockchain bằng REST API

  2. Cập nhật các block mới và transaction mới (có thể phải duyệt qua nhiều trang cho đến khi không còn block mới), điều này dẫn đến sự thay đổi số dư của các địa chỉ cũng như có thể dẫn đến xuất hiện giao dịch nộp tiền của người dùng. Bạn phải gọi lại các hàm xử lý sự kiện như khi bạn nhận được các block này qua WS dù chúng ta đang lấy nó qua REST (vì sự kiện trên WS đã trôi qua)

  3. Kết nối lại WS và tiếp tục xử lý sự kiện trên các block phát sinh trong tương lai khi nhận được qua WS

Để làm được điều này các bạn cần lắng nghe các sự kiện connect, message và disconnect của WS để có những xử lý phù hợp nhằm đảm bảo sự đồng bộ thông tin với blockchain.