Node.jsのsocket.ioライブラリの切断イベントに問題があります。 1人のユーザー(クライアントアプリケーションを閉じる)を切断すると、この1人のユーザーだけでなく、接続されているすべてのユーザーに対して切断イベントが発生します。その後、彼らは再び再接続します。Socket.io切断イベントが間違って他のユーザーのためにトリガーされ、その後に再び接続されます
この特定のユーザーのみを切断します。他のすべてはまだ接続されているはずです。
以下に示すように、切断イベントは同じ時間にそれらのユーザーに対してトリガされ、同時に接続されます。
黄色の線はOKですが、以下では赤色の部分はすべて表示されません。
'use strict';
var events = require('./events.js');
var player = require('./player.js');
var moment = require('moment');
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
var uuid = require('uuid');
app.set('port', process.env.PORT || 3000);
// all connected clients
var clients = [];
server.listen(app.get('port'), function() {
console.log("---------- SERVER IS RUNNING ----------");
});
io.on("connection", function (socket) {
socket.uuid = uuid.v1();
clients.push(socket);
PrintEvent("connection", socket);
socket.on("disconnect", function() {
socket.broadcast.emit("USER_DISCONNECTED", socket.playerID);
var i = clients.indexOf(socket);
clients.splice(i, 1);
PrintEvent("disconnect", socket);
});
});
function PrintEvent(eventName, socket) {
console.log(moment().format("YYYY-MM-DD HH:mm:ss") + "(" + clients.length + ") " + eventName + " socketID: " + socket.id);
}
少数のハイテクサーバーの詳細:
NPM -v:5.5.1
ノード-v:v8.9.0
ソケット。 io:2.0.4
少数のハイテククライアントの詳細:
- ユニティ3D + socket.io無料のプラグイン
から、あなたは私を助けていただけますか? なぜそれが正しく動作しているのかわかりません。