socket.io client connect disconnect

后端 未结 2 1534
生来不讨喜
生来不讨喜 2021-02-01 06:03

I am unable to figure out why disconnecting / connecting a socket.io connection multiple times is not working ?

Server side code:

io.on(\'connection\', f         


        
相关标签:
2条回答
  • 2021-02-01 06:25

    Have you tried this config in client ?

    // 0.9  socket.io version
    io.connect(SERVER_IP, {'force new connection': true});
    
    // 1.0 socket.io version
    io.connect(SERVER_IP, {'forceNew': true});
    
    0 讨论(0)
  • 2021-02-01 06:25

    This solution, based on Jujuleder's answer works. Apparently in socket.io 1.0, it is "forceNew" instead of "force new connection" - both work though.

    Server:

    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');
    });
    

    Client (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>
    
    0 讨论(0)
提交回复
热议问题