2017-03-16 3 views
0

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.

Antwort

0

Ich habe herausgefunden, was das Problem war. Das Problem wurde mit Angular 2 in Verbindung gebracht. Wenn Sie in der URL-Leiste "http://localhost:3001/" eingeben, wird Browsersync geöffnet. Wechseln Sie zu Synchronisierungsoptionen und deaktivieren Sie "Klicks - Klicks auf Geräte spiegeln". Das hat es für mich gelöst, hoffe es hilft Menschen, die dieses Problem in der Zukunft haben.

0

Jeder Client Emittiert und verbindet sich mit dem Server, daher erhalten Sie 2 Nachrichten auf Ihrem Server.

+0

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

Verwandte Themen