node.js socket.io socket.io-1.0

node.js - desconexión de la conexión del cliente socket.io



socket.io-1.0 (2)

No puedo entender por qué desconectar / conectar una conexión socket.io varias veces no funciona.

Código del lado del servidor:

io.on(''connection'', function(socket){ console.log(''a user connected''); socket.on(''disconnect'', function(){ console.log(''user disconnected''); }); });

Código del lado del cliente:

var socket = io(); socket.on(''connect'', function() { console.log("connected from the client side"); }); $(''#connect_button'').click(function(){ socket.connect(); }); $(''#disconnect_button'').click(function(){ socket.disconnect(); });

Se desconecta bien. Pero no vuelve a conectar. Estoy usando Socket.io 1.0. Por favor ayuda.


¿Has probado esta configuración en el cliente?

// 0.9 socket.io version io.connect(SERVER_IP, {''force new connection'': true}); // 1.0 socket.io version io.connect(SERVER_IP, {''forceNew'': true});


Esta solución, basada en la respuesta de Jujuleder, funciona. Aparentemente en socket.io 1.0, es "forceNew" en lugar de "force new connection", aunque ambos funcionan.

Servidor:

var app = require(''express'')(); var http = require(''http'').Server(app); var io = require(''socket.io'')(http); app.get(''/'', function(req, res){ res.sendfile(''s.html''); }); io.on(''connection'', function(socket){ console.log(''a user connected: '' + socket.id); socket.on(''disconnect'', function(){ console.log( socket.name + '' has disconnected from the chat.'' + socket.id); }); socket.on(''join'', function (name) { socket.name = name; console.log(socket.name + '' joined the chat.''); }); }); http.listen(3000, function(){ console.log(''listening on *:3000''); });

Cliente (s.html):

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style>button{width: 100px;}input{width: 300px;}</style> </head> <body> <ul id="messages"></ul> <button id="disconnect">disconnect</button> <button id="connect">connect</button> <script src="/socket.io/socket.io.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script> var socket = io.connect(''http://localhost:3000''); $(''#disconnect'').click(function(){ socket.disconnect(); }); $(''#connect'').click(function(){ // socket.socket.reconnect(); // socket = io.connect(''http://localhost:3000'',{''force new connection'':true }); socket = io.connect(''http://localhost:3000'',{''forceNew'':true }); socket.on(''connect'', function(msg){ socket.emit(''join'', prompt(''your name?'')); }); }); socket.on(''connect'', function(msg){ socket.emit(''join'', prompt(''your name?'')); }); socket.on("disconnect", function(){ console.log("client disconnected from server"); }); </script> </body> </html>