我使用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()在发出事件之前等待500ms,在这种情况下它确实起作用。

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

最佳答案

您需要使用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>

关于javascript - socket.io在连接时未从服务器向客户端发出事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35190278/

10-12 00:21
查看更多