2013-08-17 63 views
2

只是一個簡單的問題:YUI3和socket.io

我使用我的網站YUI3框架,並希望使用socket.io框架。

現在的挑戰是用YUI3使用socket.io。 截至目前我正在使用socket.io邏輯裏面的YUI沙箱,它的工作正常。

但是這種方法可以有任何回退嗎?如果是的話,那麼我應該如何將兩者結合?

這裏的代碼片段:

<script type="text/javascript"> 

YUI().use('my-slide' , 'node', 'event','transition', function (Y) { 

    // connecting to nodejs server running on 7001 port for dynamic updates 
    var broadcast = io.connect('http://localhost:7001/getlatestbroadcast'); 

    broadcast.on('status',function(data){ 

     // some socket logic here 
    }); 

    // Setting Listener 
    broadcast.on('moreData',function(data){ 

     // some socket logic here 

    }); 
}); 

</script> 

回答

2

你在做什麼肯定的作品,而且也沒有問題,在使用它的方式,除非你有一個名爲io其他變量衝突。使用Socket.IO(或YUI任何其他外部模塊)的稍微更有效的方法是命名空間它Y對象,而不是上:

YUI({ 
     modules: { 
      'socket.io': { 
       fullpath: '/socket.io/socket.io.js' 
      } 
     }, 

     onProgress: function (e) { 
      if (e.data[0].name === 'socket.io') { 
       YUI.add('socket.io', function (Y) { 
        Y.Socket = io; 
       }); 
      } 
     } 
    }).use('socket.io', function (Y) { 
     var socket = Y.Socket.connect('http://localhost'); 

     socket.on('news', function (data) { 
      console.log(data); 
      socket.emit('my other event', { my: 'data' }); 
     }); 
    }); 

這需要從socket.io網站的例子,並讓您的命名空間爲Y.Socket。這樣,只有當你專門做YUI().use('socket.io'),你真的能夠訪問Y.Socket,這有助於保持你的代碼組織和加載正確的順序,感謝YUI加載器。

另外,如果您正在尋找一種更簡單的方式將YUI App Framework應用程序與Socket.IO集成,請隨時查看我創建的YUI Gallery模塊Socket Model Sync

希望這有幫助,並讓我知道如果你有任何更多的問題關於整合這兩個!

+0

非常感謝給我的方式做得更優雅:)我會像上面試試.. :) – voila