socket.io在连接时不从服务器向客户端发出事件

时间:2016-02-04 00:16:22

标签: javascript node.js sockets socket.io

我有一个非常基本的socket.io设置,但是在连接建立后我的服务器发送回消息时遇到了麻烦。

当我的服务器建立连接时,我希望服务器向客户端发回消息。我已尝试使用以下代码完成此操作:

服务器

// Modules
var fs = require('fs');
var https = require('https');

// Certificate
var options = {
    pfx: fs.readFileSync('<my cert>')
};


// Create Server
httpsServer = https.createServer(options);

// Create websocket
var io = require('socket.io')(httpsServer);

// Listen on a port
httpsServer.listen(4000,function() {
    console.log('listening on *:4000');
});

io.on('connection', function(socket) {
    console.log('a user connected');
    socket.emit('test','you connected');
});

客户端

var socket = io('https://<my server>:4000');

执行此代码时,websocket建立,我的服务器控制台显示消息"a user connected"。但是,消息['test','you connected']不会通过套接字发出。

我能够让它工作的唯一方法是使用setTimeout()在发出事件之前等待500毫秒,在这种情况下它确实有效。

为什么?如何配置我的服务器,以便在用户连接后立即自动回复消息?

1 个答案:

答案 0 :(得分:0)

您需要使用socket.on(event, callback);

收听发出的事件
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>

<script>
    var socket = io('https://localhost:4000');
    //test is the emitted event.
    socket.on("test", function(data){
      console.log(data); //"you connected"
    });
</script>