【问题标题】:Is it possible for Socket.IO Event Handling to be like AJAX call event handling declaration?Socket.IO 事件处理是否可以像 AJAX 调用事件处理声明一样?
【发布时间】:2014-09-30 06:42:21
【问题描述】:

当我们在 jquery 中调用 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(){
    ...
    }
}

)

谢谢!

【问题讨论】:

  • 您必须尝试一下,或者查看 socket.io 代码,看看它是否支持对象而不是事件字符串。我找不到任何说明一种或另一种方式的文档。
  • 感谢您的评论。这给了我一个想法。

标签: javascript jquery sockets socket.io-1.0


【解决方案1】:

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

注意不是构造函数,而是模块。它的行为是单例的,因此如果您想要多个套接字连接,只需将其转换为构造函数即可。 :)

【讨论】:

    猜你喜欢
    • 2019-04-18
    • 1970-01-01
    • 2013-06-21
    • 2021-03-25
    • 1970-01-01
    • 2022-01-25
    • 2022-01-09
    • 2023-03-26
    • 2017-11-04
    相关资源
    最近更新 更多