1

接続されているすべてのクライアントに、製品の更新された簡単な価格をブロードキャストしようとしています。できます。ブロードキャストが成功し、値を更新できることを意味しますが、ブロードキャストされるのは問題です。

Socket.ioは、最後のメッセージを送信するだけでなく、サーバーの起動以降のすべてのメッセージをブロードキャストします。放送を最新の更新価格に制限する方法が見つからないようです。

サーバ:

// Broadcast new price
io.sockets.on('connection', function (socket) {
  socket.on('bidAction', function(from, msg){
    socket.broadcast.emit('bid', { price: new_price, product_id: productID });
  });
});

クライアント:

var socket = io.connect('http://localhost');
socket.on('bid', function (data) {
  console.log(data);

  // We get the element with price
  $('span.price').html(data.price.toFixed(2)) ;
});

// Now when the price is changed
$('.bid').click(function(){
  // We emit the bidding
  socket.emit('bidAction', {data: 'stuff'});
});
4

1 に答える 1

0

これを意図的に行ったのか、誤って行ったのかはわかりません。現在、

function(from, msg)

そして放送しようとする

price: new_price, product_id: productID

あなたの例では、 new_price と productID はどちらも定義されていません。

よりわかりやすいように、コードを次のように変更していただけますか?

クライアント側:

socket.emit('bidAction', {new_price: 'stuff' , productID : 'stuff'});

サーバ側:

io.sockets.on('connection', function (socket) {
  socket.on('bidAction', function(data){
    socket.broadcast.emit('bid', { price: data.new_price, product_id: data.productID });
  });
});
于 2014-02-15T17:36:44.570 に答える