套接字连接太多,更多刷新内容

时间:2019-05-30 23:51:40

标签: socket.io

我正在为共享信息的多个查看屏幕创建一个同步的Web应用程序,并使用socket.io跟踪实时更改。我遇到的问题是,当我第一次启动服务器时,我获得了更多的套接字连接,然后在刷新连接的页面时又获得了更多的套接字连接。

由于我不确定代码在哪里(部分继承)在哪里,所以我将包括一些服务器端代码和一些客户端代码。

整个文件上都有套接字调用,完整的github存储库在这里:https://github.com/Panzemek/Watch-the-screens

我尝试在卸载时断开套接字,但是没有影响。

$(this).unload(() => {
  socket.close();
})

服务器:

var http = require("http").Server(app);
var io = require("socket.io")(http);
var events = require("events");
var serverEmitter = new events.EventEmitter();
...
io.on("connection", socket => {
  console.log("socket connected...", socket.id);

  socket.on("game start", () => {
    console.log("game start clock time is " + serverClock);
    serverClock = 5;
  });
  //round end last try
  serverEmitter.on("round ended", data => {
    console.log("round ended");
    data.time = defaultRoundLen;
    socket.emit("new round", data);
  });
  //terror update
  socket.on("terror update", terrorVal => {
    io.emit("terror update", terrorVal);
  });
...

客户端,在我们的clock.js文件中:

var socket = io();

$(this).ready(function() {
  setPauseButtonText();
  timeString = $("#clock").text();
  time =
    parseInt(timeString.substring(0, 2)) * 3600 +
    parseInt(timeString.substring(3, 5)) * 60 +
    parseInt(timeString.substring(6, 8));
  socket.emit("server time init", time);
  timerInterval = setInterval(function() {
    if (!isPaused) {
      time -= 1;
      $("#clock").text(formatTime(time));
    }
  }, 1000);
});

这导致以下错误: “((node:8712)MaxListenersExceededWarning:可能检测到EventEmitter内存泄漏。添加了11个圆形结束的侦听器。使用generator.setMaxListeners()增加限制”

0 个答案:

没有答案