2013-08-12 29 views
6

Có cách nào để nhận thông báo nếu một số send() nhất định đã kết thúc không? Khi tôi nhận thấy chức năng send() không chặn và mã liên tục. Có cách nào đơn giản để làm cho nó chặn hoặc nhận được bằng cách nào đó thông báo nếu gửi xong?Xác định xem một websocket gửi() có hoàn thành

Trả lời

3

Bạn có thể dựa vào Socket.bufferedamount (không bao giờ cố gắng)

http://www.whatwg.org/specs/web-apps/current-work/multipage/network.html#dom-websocket-bufferedamount

var socket = new WebSocket('ws://game.example.com:12010/updates'); 
socket.onopen = function() { 
    setInterval(function() { 
     if (socket.bufferedAmount == 0){ 
      // Im' not busy anymore - set a flag or something like that 
     } 
    }, 50); 
}; 

Hoặc thực hiện một thừa nhận câu trả lời từ máy chủ cho mỗi tin nhắn khách hàng (cố gắng, hoạt động tốt)

+0

tôi sợ cái đó. Cảm ơn gợi ý về bufferedamount - nhưng tôi nghĩ rằng tôi phải hoàn toàn xử lý điều này ở phía máy chủ mà tôi muốn tránh. thông báo xác nhận là một ý tưởng hay, nhưng trong trường hợp đó tôi có thể xử lý các tiến trình lỗ hổng trong tình huống của tôi. tôi cho câu hỏi này chưa được trả lời một chút - có thể một số người khác có một ý tưởng nhưng tôi sẽ đánh dấu nó như được trả lời bởi bạn shorty, cảm ơn. –