2017-03-16 111 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

相关问题