我有一个非常基本的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毫秒,在这种情况下它确实有效。
为什么?如何配置我的服务器,以便在用户连接后立即自动回复消息?
答案 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>