我使用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/