我有这个奇怪的问题,当我向服务器发送消息而只有1个客户端时,一切正常,因为只有一个消息被发送。但是当多个客户端连接到服务器,并且一个客户端向服务器发送内容时,服务器会收到来自每个客户端的消息,原因有些奇怪。
我正在使用Socket.IO和Angular 2.
客户代码:
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'));
}
}
服务器代码:
io.on('connect', function (socket) {
console.log("a user connected");
socket.on('sweg', function(msg) {
var incomingMsg = JSON.parse(msg);
console.log(incomingMsg);
});
});
使用1个客户端发出时的服务器响应: image 使用2个客户端发出服务器响应: image
正如您所看到的,客户端由于某种原因发出两次,因为有2个客户端,即使这些客户端中只有1个决定发出。任何帮助将不胜感激。
编辑:如果我可能不清楚,我的目标是当客户端发出时,它应该只为自己而不是所有其他客户端发射。
答案 0 :(得分:0)
每个客户端发送并连接到服务器,因此您将在服务器中收到2条消息。
答案 1 :(得分:0)
我发现了问题所在。该问题与Angular 2有关。如果您输入" http://localhost:3001/"在网址栏中,Browsersync打开。转到同步选项并关闭"点击 - 镜像跨设备的点击次数"。这解决了它,希望它可以帮助将来有这个问题的人。