1
웹 소켓 구현을 위해 ws 모듈을 사용하고 있습니다.emit을 한 번만 호출하면 사용자 정의 이벤트가 여러 번 발생합니다.
newmessage
이라는 이벤트가 web-socket-server로 열린 소켓 수와 같습니다. 나는 이유를 이해할 수 없었다. 디버깅에서 방출이 한 번만 발생했지만 이벤트 함수가 두 번 호출되는 것을 발견했습니다.
'use strict';
var WebSocketServer = require("ws").Server
, EventEmitter = require("events").EventEmitter
, util = require("util")
, Logger = require("./Logger");
function SocketServer(port) {
this.socketPort = port;
// Starts WebSocket Server
this.socketServer = new WebSocketServer({port: this.socketPort});
var logger = new Logger(`Socket server started on ${this.socketPort}`,0).log();
}
util.inherits(SocketServer,WebSocketServer);
SocketServer.prototype.activateListeners = function() {
var that = this;
this.socketServer.on("connection",function(socket) {
that.emit("newsocket",socket,200);
socket.on("message",function(message) {
that.emit("newmessage",message,200);
});
});
};
// Exports
module.exports = SocketServer;
은 무엇 이것에 대한 이유가 될 수있다 : 여기
var SocketServer = require("./lib/SocketServer");
// Creating the object starts the server on this.socketPort
var sserver = new SocketServer(webSocketPort);
// Calling activateListeners on SocketServer instance, activates
// all the event listeners associated with SocketServer
sserver.activateListeners();
sserver.on("newsocket",function(socket,status) {
infoLogger.setMessage(`New socket opened: ${socket}`).log();
sserver.on("newmessage",function(message,status) {
// BEING CALLED = NUMBER OF SOCKETS OPENED
infoLogger.setMessage(`New message received: ${message}`).log();
});
});
는
SocketServer
기능입니다?
newsocket
이벤트가 한 번만 발생하고
newmessage
이벤트가 발생하면이 문제가 발생합니다 (
SocketServer
).