2013-11-02 5 views
1

Я пытаюсь построить процедуру повторного подключения для клиентов, которые теряют соединение. В клиенте js я могу обнаружить, когда соединение потеряно, и периодически пытайтесь подключиться к серверу. Когда я снова подключусь, сервер будет использовать новый сокет.Уникальный идентификатор Node.js для клиента для переподключений

На клиенте это моя переподключение логика

var socket = io.connect(ip, { 
    'reconnect': true, //will create a new socket on the server 
    'reconnection delay': options.retryInterval, 
    'max reconnection attempts': 10 
}); 

socket.on("disconnect", function() { 
    this.connected = false; 
    this.autoretry(); 
}); 

//establish the connection - similiar to the reconnect method 
socket.emit("connect", this.options); 

//.... 
autoretry: function() { 
    if(this.connected) {return;}; 
    var next = this.__retry *= this.options.retryScalar; 
    this.socket.emit("retry", this.connect.options); 
    return _.delay(this.autoretry, next, this); 
} 

Проблема заключается каждый клиент имеет свой tls подключение к внешнему серверу, и я хотел бы провести это соединение открытым в течение короткого периода времени; ожидая, восстановится ли клиент.

Есть ли способ однозначно идентифицировать клиента в узле или я должен создать идентификатор на клиенте и передать его на сервер?

ответ

1

Для идентификации клиентов вы должны сделать socket.io работу с expressjs сессий, каждая сессия имеет уникальный идентификатор, и использует множество дополнительных методов для идентификации себя на стороне сервера, (печенье, заголовки ..)

http://howtonode.org/socket-io-auth

также розетки имеют уникальный идентификатор по умолчанию, когда объект сокета передается обратный вызов io.on('connection',function(socket), доступ по socket.id собственности

для идентификации клиента что потерянное соединение, и скрипт пытается подключиться, попробуйте прослушать reconnect, reconnecting, reconnect_failed событий.

https://github.com/LearnBoost/socket.io/wiki/Exposed-events

+0

Есть ли способ, чтобы определить Reconnecting на сервере, потому что его по-прежнему создает новый сокет с другой 'id' – megawac

+0

Найдено мой ответ: http://stackoverflow.com/questions/9668996/does -socket-io-reconnects-re-run-connect, чтобы создать уникальный идентификатор клиента в браузере. – megawac

Смежные вопросы