/ / Я не хочу запускати socket.emit, поки я не буду його використовувати - node.js, sockets, express, socket.io

Я не хочу запускати socket.emit, поки я не готовий використовувати його - node.js, sockets, express, socket.io

Тому я не хочу забирати з сервера 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;
})

Клієнт отримує Q набагато пізніше, але його не слід робити на початку, але сокет випромінює майже відразу і дає мені помилки, оскільки socket.Ques не робиться до цього пізніше.

Відповіді:

0 для відповіді № 1

Проста, випромінюйте 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");
});

0 для відповіді № 2

node.js - середовище, кероване подіями. Отже, колись у майбутньому на вашому сервері відбудеться якась подія, яка змусить вас надіслати це .emit(). У цей момент потрібно вміти знайти відповідне socket об'єкта, а потім використовувати його для надсилання .emit().

Оскільки ви ще не сказали, яку саме подію ви хочете використати, щоб надіслати цю емісію, ми не можемо допомогти конкретніше. Якщо ви хочете пояснити це, ми, можливо, можемо запропонувати конкретний код.


0 для відповіді № 3

Для клієнта ви повинні зробити:

  const chat = io.connect("http://localhost/chat")
chat.on("connect", function () {
chat.emit("getQ", socket.Ques[0].question);
});