Ich verwende das Modul ws, um Web-Sockets zu implementieren.Benutzerdefiniertes Ereignis wird mehrfach ausgelöst, wenn emit nur einmal aufgerufen wird
Das Ereignis mit dem Namen newmessage
wird ausgelöst, gleich der Anzahl der Sockets, die mit dem Web-Socket-Server geöffnet werden. Ich konnte den Grund nicht verstehen. Obwohl ich beim Debuggen festgestellt habe, dass die Ausgabe nur einmal ausgelöst wird, wird die Ereignisfunktion zweimal aufgerufen. Hier
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();
});
});
ist die SocketServer
Funktion:
'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;
Was ist der Grund dafür sein könnte? newsocket
Ereignis wird nur einmal ausgelöst und das Problem tritt nur mit newmessage
Ereignis ausgelöst von SocketServer
.