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>