问题出在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');
答案 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)
他们写道,我们可以通过设置此配置来禁用在套接字构建时连接到服务器:
自动连接默认为 true
当您调用io.connect()时,Socket.IO应自动与服务器建立连接。
所以现在我们构造对象,它不会立即创建连接。
构建未连接的套接字后,调用方法create()
我仍然不知道如何关闭连接。所以注意更新