2016-02-04 206 views
1

我有一个非常基本的设置与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'); 

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

我一直能够得到这个工作的唯一方法是使用setTimeout()等待500毫秒才发出事件,在这种情况下,它的工作。

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

+0

检查我的答案,让我知道,它的工作完全没有给我。 –

+0

你的客户端代码是什么样的? – usandfriends

回答

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> 
+0

嗨马科斯,我会接受答案,因为它确实有效,但我想知道你是否可以进一步解释。对于这个测试事件,是的,它会在我的客户端触发回调。但是这些数据并没有真正显示在websocket流量中。随后发出的“测试”事件显示在websocket流量中。这是为什么?试图了解发生了什么。 – skokenes

+0

今晚,当我回家的时候,我会试着给你更详细的解释。 –

相关问题