2017-03-16 116 views
0

當我向服務器發送消息時,只有一個客戶端,一切正常,因爲只有一條消息被髮送,我有這個奇怪的問題。但是,當多個客戶端連接到服務器,並且一個客戶端向服務器發送某些內容時,服務器會收到來自每個客戶端的消息,原因很奇怪。當只有一個客戶端發射時,爲每個客戶端發射Socket.IO

我使用Socket.IO和角2.

客戶機代碼: image :與客戶端1的發光時

io.on('connect', function (socket) { 
    console.log("a user connected"); 

    socket.on('sweg', function(msg) { 
     var incomingMsg = JSON.parse(msg); 
     console.log(incomingMsg); 
    }); 
}); 

服務器響應:

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')); 
    } 
} 

服務器代碼使用2個客戶端發送時的服務器響應: image

正如您所看到的,客戶端由於某種原因發射了兩次,因爲有2個客戶端,即使只有1個客戶端決定發射。任何幫助,將不勝感激。

編輯:如果我也許不清楚,我的目標是,當客戶端發出時,它應該只爲自己發出,而不是所有其他客戶端。

回答

0

我發現問題是什麼。該問題與Angular 2相關。如果您在網址欄中輸入「http://localhost:3001/」,Browsersync將打開。轉到同步選項並關閉「點擊 - 鏡像點擊跨設備」。這爲我解決了這個問題,希望它能幫助那些未來有此問題的人。

0

每個客戶端發出並連接到服務器,因此您將在服務器中收到2條消息。

+0

你也許有辦法解決這個問題。不幸的是不知道如何解決它。我的目標是即使多個客戶端連接,發出的一個客戶端實際上應該是服務器從中接收消息的唯一客戶端。 – SquishyAura

相關問題