2014-10-03 7 views
12

Voglio trovare il modo più semplice possibile (preferibilmente senza fare affidamento su molte librerie aggiuntive) per connettere un componente Polymer con una presa Web in modo da poterlo aggiornare facilmente dal backend.Aggiornamento del componente del polimero tramite Websocket?

In questo momento ho studiato facendo questo con bacon.js dato che è molto facile impostare un flusso di eventi direttamente dal socket web. La mia idea è di filtrare questi messaggi e indirizzarli ai singoli componenti Polymer. Tuttavia, se questo può essere fatto facilmente senza bacon.js o altre librerie (vale a dire con solo Polymer stesso e un normale socket Web javascript) potrebbe essere preferibile. Qualche idea, suggerimento o codice di esempio?

Grazie, in anticipo

/Robert

+2

http://customelements.io/?q=websocket o cercando "socket" su http://component.kitchen/ restituisce un paio di risultati. – ebidel

risposta

3

Ecco un modo molto semplice di gestire websocket utilizzando polimero

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(); 
     } 
    }) 

prega di dare un'occhiata al WebSocket Polymer Element, L'elemento Polymer utilizza il nativo Client WebSocket fornito con la maggior parte dei moderni browser di oggi.

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. –

+3

Ho aggiornato la risposta per riflettere i vostri suggerimenti. – Mesopotamia

+0

perché hai definito socket: null, al di fuori delle proprietà: {} oggetto? – Danish