سلام
بخشی از کد سرور:
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.on('connection', function(socket){
socket.on('change cell', function(cellObj){
socket.broadcast.emit('change cell', cellObj);
});
socket.on('focus cell', function(focusObj){
socket.broadcast.emit('focus cell', focusObj);
});
socket.on('blur cell', function(blurObj){
socket.broadcast.emit('blur cell', blurObj);
});
});
http.listen(۸۰۰۰, function(){
console.log('listening on *:۸۰۰۰');
});
بخشی از کد کلاینت:
دریافت:
import openSocket from 'socket.io-client';
const socket = openSocket('http://localhost:۸۰۰۰');
socket.on('change cell', function(cellObj){
console.log("cellObj")
Control.changeEvent(cellObj);
});
socket.on('focus cell', function(focusObj){
console.log("focusObj")
Control.focusEvent(focusObj)
});
socket.on('blur cell', function(blurObj){
Control.blurEvent(blurObj)
});
انتشار:
import openSocket from 'socket.io-client';
const socket = openSocket('http://localhost:۸۰۰۰');
socket.emit('change cell', {row, column , value , changer:ID , readOnly:true});
socket.emit('focus cell', {row, column , readOnly:true});
socket.emit('blur cell', {row, column , readOnly:false});
ارسال کننده رویداد در سمت کلاینت موقع انتشار توسط خودش هم رویداد رو دریافت میکنه با اینکه از broadcast استفاده شده.
حل این مشکل چی کار کنم؟
و لطفا اگه real-time library خوب دیگه ای که از قابلیت broadcast سوکت دات یو پشتیبانی میکنه معرفی کنید( البته مثل engine.io روی socket.io ساخته نشده باشه).
حل شد!
مشکل از این بود که دوبار شی سوکت رو ساختم!
شاید پاسخ شما همینجا باشد