2017-12-20 100 views
0

Node.js의 socket.io 라이브러리에서 연결 끊기 이벤트에 문제가 있습니다. 한 명의 사용자 (클라이언트 응용 프로그램 닫기)의 연결을 끊으면이 한 명의 사용자뿐만 아니라 연결된 모든 사용자에 대해 연결 해제 이벤트가 트리거됩니다. 이것 후에 그들은 다시 재 연결한다.Socket.io 연결 끊기 이벤트가 다른 사용자에게 잘못 트리거 된 후 다시 연결됩니다.

이 특정 사용자와의 연결을 끊고 싶습니다. 다른 모든 사람들은 여전히 ​​연결되어 있어야합니다.

아래에서 볼 수 있듯이 연결 해제 이벤트는 같은 시간에 해당 사용자에 대해 트리거되며 동시에 연결됩니다.

노란색 선은 괜찮지 만 아래에서 모두 빨간색으로 표시되어서는 안됩니다.

Socket.io events

'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 무료 플러그인 당신이 좀 도와 주 시겠어요? 왜 제대로 작동하지 않는지 알 수 없습니다.

답변

0

Unity3D 플러그인이 Socket.IO를 호출하면이 문제가 발생했음을 알 수 있습니다. Node.js로 작성된 클라이언트로 서버 코드를 테스트했을 때 모든 것이 올바르게 작동합니다.

나는 또한 다른 플러그인 Best HTTP를 테스트하기 시작했으며이 연결 해제 오류를 만들지 않았 음을 확인할 수 있습니다. 지금까지 그렇게 좋은;)