套接字IO发布 - 订阅模型棘手

时间:2012-03-06 08:29:10

标签: javascript node.js socket.io publish-subscribe

问题出在socket.io客户端。

我想首先创建未连接的套接字,并在分配所有侦听器后将其连接到服务器。无法在我的应用程序中的某个位置同步设置侦听器,因为存在一些依赖关系。

我知道对于node.js来说这是正常的行为!看看nodejs的套接字吧!我希望我的架构没有问题。 Socket io缺少documentation,我找不到如何做我想做的事情:

var socket = new io.Socket(); //creating empty socket.But this line does not work

//..... socket variable can be passed somewhere .....
//..... to another place in app .....

socket.on('message', callback);

//..... when everyone is ready and subscriben .....

socket.connect('some-url');

3 个答案:

答案 0 :(得分:1)

所以你想在事情发生时开始socket.connect()?所以这是一个经典的click事件监听器:

$('#button').click(function() {
    socket.connect('some-url')
});

如果您只想在事件发生后收听消息,请执行以下操作:

socket.connect('some-url')
document.getElementById('button').onclick = function() {
    socket.on('message', function() {
        // Your stuff
    }
} 

答案 1 :(得分:1)

如果我正确理解您的问题,如果您创建一个没有立即连接的套接字,那么添加到它的所有事件侦听器一旦连接就会被忽略。那可能是废话,我还没有玩套接字,所以我无法验证它是否真实,但我有一个问题的解决方案

创建一个外观,您可以添加所有侦听器,一旦您要连接到服务器,连接,添加您的侦听器(这应该同步完成)并代理套接字通过您的外观调度的所有事件。

答案 2 :(得分:0)

我在socket.io documentatuion

找到了我要找的东西

他们写道,我们可以通过设置此配置来禁用在套接字构建时连接到服务器:

  

自动连接默认为 true

     

当您调用io.connect()时,Socket.IO应自动与服务器建立连接。

所以现在我们构造对象,它不会立即创建连接。

构建未连接的套接字后,调用方法create()

我仍然不知道如何关闭连接。所以注意更新