Ich habe dieses seltsame Problem, wo, wenn ich eine Nachricht an den Server emittieren, während es nur 1 Client ist, funktioniert alles gut, da nur eine Nachricht gesendet wird. Wenn jedoch mehrere Clients mit dem Server verbunden sind und ein Client etwas an den Server sendet, empfängt der Server die Nachricht von jedem einzelnen Client aus einem seltsamen Grund.Socket.IO emittiert für jeden Client, wenn nur ein Client sendet
Ich verwende Socket.IO und Angular 2.
Client-Code:
import { Component } from '@angular/core';
import * as io from "socket.io-client";
@Component({
moduleId: module.id,
selector: 'register-app',
templateUrl: 'register.component.html',
})
export class RegisterComponent { name = 'Angular';
socket: SocketIOClient.Socket;
constructor(){
this.socket = io('http://localhost:9999');
}
registerAccount(){
this.socket.emit('sweg', JSON.stringify('waaaaat'));
}
}
Server Code:
io.on('connect', function (socket) {
console.log("a user connected");
socket.on('sweg', function(msg) {
var incomingMsg = JSON.parse(msg);
console.log(incomingMsg);
});
});
Server-Antwort, wenn sie mit 1 Client emittieren: image Serverantwort beim Senden mit 2 Clients: image
Wie Sie sehen können, ist der Client aus irgendeinem Grund zweimal emittieren, da es 2 Clients gibt, obwohl nur 1 dieser Clients entschieden hat, zu emittieren. Jede Hilfe wäre willkommen.
Edit: Wenn ich vielleicht nicht klar war, ist mein Ziel, dass, wenn ein Client ausstrahlt, er nur für sich selbst und nicht alle anderen Kunden emittieren sollte.
Haben Sie vielleicht eine Möglichkeit, das zu beheben. Ich bin mir nicht sicher, wie ich es selbst beheben kann. Mein Ziel ist, dass obwohl mehrere Clients eine Verbindung herstellen, der einzige Client, der ausstrahlt, eigentlich der einzige sein sollte, von dem der Server eine Nachricht erhält. – SquishyAura