#node.js #socket.io
Вопрос:
в настоящее время я использую следующий код в node.js с розеткой.ввод-вывод для подключения к моему серверу, который работает нормально. Но если мой node.js сервер не работает, клиент пытается подключиться к нему снова и снова через определенные промежутки времени, но я хотел бы остановить его и закрыть сокет на стороне клиента, если сервер недоступен. Я пробовал использовать connect_failed, но, к сожалению, это никогда не вызывается. как это можно сделать?
function findOpponent(gamemode)
{
console.log('Registering myself on nodejs Server and waiting for 2nd player');
socket = io.connect("http://gladiator.localhost:3000" , {
'query': 'amp;uuid=' uuid 'amp;authkey=' auth_key 'amp;gamemode=' gamemode
});
socket.on('connect_failed', function() {
// --> this is never being called
console.log("Sorry, there seems to be an issue with the connection!");
});
socket.on('user join',function(msg){
alert('USER JOINED');
});
socket.on('user leave',function(msg){
console.log(msg);
alert('USER LEFT');
});
socket.on('message',function(msg){
alert(msg);
});
socket.on('gamestart',function(data){
console.log('gamestart');
alert(data.msg);
});
}
Ответ №1:
попробуйте autoConnect
и reconnection
варианты для клиента ввода-вывода сокета
{ autoConnect: false, reconnection: false}
Редактировать:
и вы можете прослушивать connect_error
событие на предмет обнаружения ошибки подключения
socket.on("connect_error", callback)
Комментарии:
1. спасибо, что это работает, поэтому клиент пытается подключиться к серверу только один раз. Однако я хочу отобразить сообщение об ошибке для клиента, если он не может подключиться. Поэтому мне в основном нужен способ поймать ошибку подключения.
2. @DanielResch попробуй это
socket.on("connect_error", callback)
иsocket.on("disconnect", callback)
3. спасибо, что on(«connect_error») делает именно то, что я искал, вы могли бы включить это в свой ответ. Я просто не понимаю, для чего тогда предназначено событие connect_failed.