当只有一个客户端发射时,为每个客户端发射Socket.IO
问题描述:
当我向服务器发送消息时,只有一个客户端,一切正常,因为只有一条消息被发送,我有这个奇怪的问题。但是,当多个客户端连接到服务器,并且一个客户端向服务器发送某些内容时,服务器会收到来自每个客户端的消息,原因很奇怪。当只有一个客户端发射时,为每个客户端发射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个客户端决定发射。任何帮助,将不胜感激。
编辑:如果我也许不清楚,我的目标是,当客户端发出时,它应该只为自己发出,而不是所有其他客户端。
答
我发现问题是什么。该问题与Angular 2相关。如果您在网址栏中输入“http://localhost:3001/”,Browsersync将打开。转到同步选项并关闭“点击 - 镜像点击跨设备”。这为我解决了这个问题,希望它能帮助那些未来有此问题的人。
答
每个客户端发出并连接到服务器,因此您将在服务器中收到2条消息。
你也许有办法解决这个问题。不幸的是不知道如何解决它。我的目标是即使多个客户端连接,发出的一个客户端实际上应该是服务器从中接收消息的唯一客户端。 – SquishyAura