Socket.IO 当只有一个客户端发出时为每个客户端发出
Socket.IO emitting for each client when only one client emits
我遇到了一个奇怪的问题,当我在只有 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 个客户端决定发射。任何帮助将不胜感激。
编辑:如果我可能不清楚,我的目标是当一个客户端发出时,它应该只为自己而不是所有其他客户端发出。
每个客户端发出并连接到服务器,因此您将在服务器中收到 2 条消息。
我发现了问题所在。该问题与 Angular 2 有关。如果您在 url 栏中键入“http://localhost:3001/”,Browsersync 将打开。转到同步选项并关闭 "Clicks - mirrors clicks across devices"。这为我解决了它,希望它能帮助将来遇到这个问题的人。
我遇到了一个奇怪的问题,当我在只有 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 个客户端决定发射。任何帮助将不胜感激。
编辑:如果我可能不清楚,我的目标是当一个客户端发出时,它应该只为自己而不是所有其他客户端发出。
每个客户端发出并连接到服务器,因此您将在服务器中收到 2 条消息。
我发现了问题所在。该问题与 Angular 2 有关。如果您在 url 栏中键入“http://localhost:3001/”,Browsersync 将打开。转到同步选项并关闭 "Clicks - mirrors clicks across devices"。这为我解决了它,希望它能帮助将来遇到这个问题的人。