我在socket.io库中为Node.js的disconnect事件有问题。 当我断开一个用户(关闭客户端应用程序)时,不仅为这一个用户而且为所有连接的用户触发断开连接事件。在此之后,他们再次重新连接。
我想仅断开此特定用户的连接。所有其他人应该仍然保持联系。
如下所示,同时为这些用户触发断开连接事件,并且它们也会在同一时间连接。
黄线没问题,但下面所有标记为红色都不应该发生。
'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
node -v:v8.9.0
socket.io:2.0.4
很少有科技客户详情:
能帮帮我吗? 我不知道它为什么不能正常工作。
答案 0 :(得分:0)
据说Unity3D插件调用Socket.IO导致了这个问题。 当我使用Node.js编写的客户端测试服务器代码时,一切正常。
我也开始测试另一个插件Best HTTP,我可以确认它没有发生此断开连接错误。到目前为止一切顺利;)