所以我不想从服务器socket.emit中获取,直到我需要它为止。因为在那之前一切都没有完全准备好。我怎么有socket.emit静静地坐着,直到我准备好了?
服务器
io.sockets.on('connection', function (socket) {
socket.on('adduser', function(player){
........
}
socket.emit('getQ', socket.Ques[0].question);
]
客户端
var retrieveQ = function (){
socket.on('getQ', function(quesPick){
quesObj = quesPick;
})
客户端很快就会检索它,而不是假设在启动时完成,但是socket几乎立刻就会发出错误,因为socket.Ques直到稍后才会出现。
答案 0 :(得分:0)
简单,在客户端套接字连接后响应客户端请求发出getQ。像这样:
io.sockets.on('connection', function (socket) {
socket.on('adduser', function(player){
........
}
socket.on('askGetQ', function(zzz){
socket.emit('getQ', socket.Ques[0].question);
}
}
在客户端上执行:
io.on('connection', function(socket){
socket.emit('getQ', 'something');
});
答案 1 :(得分:0)
node.js是一个事件驱动的环境。因此,在将来的某个时间,您的服务器上会出现某种事件,导致您希望发送此.emit()
。此时,您需要能够找到相应的socket
对象,然后使用它来发送.emit()
。
由于您还没准确说出要用于发送此内容的事件,因此我们无法提供更具体的帮助。如果你想解释一下,我们可能会提供具体的代码。
答案 2 :(得分:0)
在客户端上你应该这样做:
const chat = io.connect('http://localhost/chat')
chat.on('connect', function () {
chat.emit('getQ', socket.Ques[0].question);
});