5

socket.io では、トランスポート xhr-polling がアクティブな場合、切断イベントは発生しません。トランスポートを websockets に切り替えると正常に動作しますが、xhr ポーリングでは動作しません。

/* Basics */
var express = require('express'),
    app = express(),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

server.listen(1337, null);

io.set('transports', ['xhr-polling']);

// routing
app.get('/', function (req, res) {
    res.sendfile("index.html");
    app.use(express.static(__dirname));
});

io.sockets.on('connection', function (socket) 
    socket.on('disconnect', function() {
        console.log('LOL');
    });
});

次のコードでは、切断は発生しませんが、行を削除すると -
io.set('transports', ['xhr-polling']);
完全に機能するのに、なぜ xhr-polling で機能しないのですか? しかし、ウェブソケットのみですか?

どうすればこれを修正できますか? 何か不足していますか?

前もって感謝します ;)

4

2 に答える 2

1

私は同じ問題を抱えていたので、クライアントソケットでオプション {'sync disconnect on unload' : true} を使用しました:

var socket = io.connect('http://yourServerDomain.com', {'sync disconnect on unload' : true});

ソケットに強制的に切断イベントをすぐに送信させます。

于 2015-04-02T12:54:01.467 に答える