2014-09-30 75 views
0

當我們有和AJAX呼叫jQuery的我們可以這樣寫:Socket.IO事件處理可能像AJAX調用事件處理聲明一樣嗎?

$.ajax({ 
    url: 'http://localhost/url', 
    type: 'GET', 
    dataType: "json",   
    data: {name : "data"}, 
    beforeSend : function(){ 
    ... 
    }, 
    success:function(data) 
    { 
    ... 
    }, 
    error : function(){ 
    ... 
    } 
} 
}); 

這是申報模板/風格也可以應用到插座事件Socket.IO處理?

我們可以這樣做:

var socket = io.connect(); 

socket.on({ 
    'connect' : function(){ 
    ... 
    }, 
    'error' : function(){ 
    ... 
    }, 
    'my custom event' : function(){ 
    ... 
    } 
} 

謝謝!

+0

您將不得不嘗試它或查看socket.io代碼,以查看它是否支持對象而不是事件字符串。我無法找到任何指示這種或那種方式的文檔。 – jfriend00 2014-09-30 18:27:32

+0

感謝您的評論。這給了我沒有想法。 – 2014-10-01 01:09:45

回答

0

在socket.io文檔,他們告訴你可以使用調用鏈做到這一點:

socket.on(...) 
     .on(...) 
     .on(...) 

如果你真的不想要的話,你可以簡單地寫一個模塊包裝它:

yourNameSpace.Socket = (function(){ 
    var socket = null; 

    this.config = function(){ 
     socket = io.connect("..."); 
    }; 

    this.on = function(events){ 
     for(var ev in events){ 
      if(typeof events == 'object' && events.hasOwnProperty(ev)){ 
       socket.on(ev, events[ev]); 
      } 
     } 
    }; 

    this.getSocket = function(){ 
     return socket; 
    }; 

    return this; 
})(); 

請注意,這不是一個構造函數,而是一個模塊。它的行爲是單例,所以如果你想要多個套接字連接,只需將其轉換爲構造函數即可。 :)