Node.js의 socket.io 라이브러리에서 연결 끊기 이벤트에 문제가 있습니다. 한 명의 사용자 (클라이언트 응용 프로그램 닫기)의 연결을 끊으면이 한 명의 사용자뿐만 아니라 연결된 모든 사용자에 대해 연결 해제 이벤트가 트리거됩니다. 이것 후에 그들은 다시 재 연결한다.Socket.io 연결 끊기 이벤트가 다른 사용자에게 잘못 트리거 된 후 다시 연결됩니다.
이 특정 사용자와의 연결을 끊고 싶습니다. 다른 모든 사람들은 여전히 연결되어 있어야합니다.
아래에서 볼 수 있듯이 연결 해제 이벤트는 같은 시간에 해당 사용자에 대해 트리거되며 동시에 연결됩니다.
노란색 선은 괜찮지 만 아래에서 모두 빨간색으로 표시되어서는 안됩니다.
'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
몇몇 기술 클라이언트 세부 정보 : assetstore
에서
- 유니티 3D + socket.io 무료 플러그인 당신이 좀 도와 주 시겠어요? 왜 제대로 작동하지 않는지 알 수 없습니다.