2017-12-20 25 views
0

Node.jsのsocket.ioライブラリの切断イベントに問題があります。 1人のユーザー(クライアントアプリケーションを閉じる)を切断すると、この1人のユーザーだけでなく、接続されているすべてのユーザーに対して切断イベントが発生します。その後、彼らは再び再接続します。Socket.io切断イベントが間違って他のユーザーのためにトリガーされ、その後に再び接続されます

この特定のユーザーのみを切断します。他のすべてはまだ接続されているはずです。

以下に示すように、切断イベントは同じ時間にそれらのユーザーに対してトリガされ、同時に接続されます。

黄色の線はOKですが、以下では赤色の部分はすべて表示されません。

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

少数のハイテククライアントの詳細:

  • ユニティ3D + socket.io無料のプラグイン
assetstore

から、あなたは私を助けていただけますか? なぜそれが正しく動作しているのかわかりません。

答えて

0

Unity3DプラグインがSocket.IOを呼び出すと、この問題が発生することが分かります。 Node.jsで書かれたクライアントでサーバーコードをテストしたところ、すべて正常に動作します。

また、他のプラグインのベストHTTPをテストし始めましたが、この切断エラーが発生しないことを確認できました。これまでにとても良い;)

関連する問題