socket.emit внутри socket.on объединяет одно и то же значение после каждого излучения.
Вот мой код на стороне сервера
io.on('connection', function(socket){
let balance = 6000;
console.log('a user connected');
socket.on('giveValue',function(data){
if(data.msg==="New Value"){
let x = Math.floor(Math.random() * 100 - 50);
balance += x;
socket.emit('takeValue',{balance:balance,value:x});
}
});
socket.on('disconnect',function(){
console.log('User disconnected');
});
socket.on('getBalance',(data)=>{
if(data.msg==='bringBalance'){
socket.emit('ubalance',{data:balance});
}
})
});
А это на стороне клиента, для стороны клиента я использую Angular 6
constructor() {
this.socket = io('http://localhost:4000');
}
ngOnInit() {
this.socket.emit('getBalance',{msg:"bringBalance"});
this.socket.on('ubalance',(data)=>{
console.log(data);
this.balance=data.data;
});
}
getSum(event) {
this.socket.open();
this.socket.emit('giveValue',{msg:"New Value"});
this.socket.on('takeValue', (data) => {
this.balance=data.balance;
console.log("Value====="+data.value) + "\n";
console.log("Balance======"+data.balance);
});
}
После того, как каждый щелчок запускает функцию getSum () и генерирует случайные значения в бэк-энде, добавляйте эти значения в баланс. Все это делает моя бэк-энда.
Так что проблема в том, что socket.on ("takeValue") после каждого клика приносит еще один
То же самое значение. Как я могу исправить эту часть. Извините за мои языковые ошибки, я надеюсь, что вы меня поняли. Спасибо за внимание и за помощь.