2014-10-03 27 views
12

Tôi muốn tìm cách đơn giản nhất có thể (tốt nhất là không dựa vào nhiều thư viện bổ sung) để kết nối thành phần Polymer với ổ cắm web để tôi có thể cập nhật dễ dàng từ chương trình phụ trợ.Cập nhật thành phần Polymer qua Websocket?

Ngay bây giờ tôi đã điều tra làm điều này với bacon.js vì rất dễ dàng để thiết lập luồng sự kiện trực tiếp từ ổ cắm web. Ý tưởng của tôi là lọc các thông điệp này và định tuyến chúng đến các thành phần Polymer riêng lẻ. Tuy nhiên, nếu điều này có thể dễ dàng thực hiện mà không có bacon.js hoặc các thư viện khác (nghĩa là chỉ với chính Polymer và một ổ cắm Web javascript bình thường) có thể thích hợp hơn. Bất kỳ ý tưởng, gợi ý hoặc mã ví dụ nào?

Cảm ơn, trước

/Robert

+2

http://customelements.io/?q=websocket hoặc tìm kiếm "socket" trên http://component.kitchen/ trả về một vài kết quả. – ebidel

Trả lời

3

Dưới đây là một cách rất cơ bản của xử lý WebSocket sử dụng polymer

Polymer({ 
     is: "ws-element", 
     socket: null, 
     properties: { 
      protocol: { 
       type: String 
      }, 
      url: { 
       type: String 
      } 
     }, 
     ready: function() { 
      this.socket = new WebSocket(this.url, this.protocol); 
      this.socket.onerror = this.onError.bind(this); 
      this.socket.onopen = this.onOpen.bind(this); 
      this.socket.onmessage = this.onMessage.bind(this); 
     }, 
     onError: function (error) { 
      this.fire('onerror', error); 
     }, 
     onOpen: function (event) { 
      this.fire('onopen'); 
     }, 
     onMessage: function (event) { 
      this.fire('onmessage', event.data); 
     }, 
     send: function (message) { 
      this.socket.send(message); 
     }, 
     close: function() { 
      this.socket.close(); 
     } 
    }) 

Hãy dành một cái nhìn tại các WebSocket Polymer Element, Yếu tố Polymer sử dụng có nguồn gốc WebSocket client đi kèm với hầu hết các trình duyệt hiện đại ngày nay.

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. –

+3

Tôi đã cập nhật câu trả lời để phản ánh đề xuất của bạn. – Mesopotamia

+0

tại sao bạn xác định socket: null, bên ngoài thuộc tính: {} object? – Danish

Các vấn đề liên quan