2014-02-22 42 views
1

我目前正在使用node.js和socket.io拍卖脚本。 该网站将有500-1000登录用户在拍卖期间查看单个页面。在同一时间只有一件产品将出售,类似于在拍卖行举行的实际拍卖。使用node.js和socket.io每秒广播

我将向所有登录用户从服务器向客户端广播一个倒数计时器。在服务器端,我将使用1秒的setInterval()倒计时到拍卖结束时间。除此之外,唯一发送的其他消息是将当前出价从单个客户端传递到服务器,然后广播给所有人。 这将是一个可靠的方法来做到这一点?它能够处理服务器上的使用情况吗?

如果不是有没有更好的方法?

感谢巴蒂尔

+0

在拍卖结束前告诉客户有多少毫秒会比发送数千个重复数据包要好得多。您甚至可以在价格数据包中隐藏时间戳以偶尔重新同步所有客户端,以防Windows在拍卖过程中稍微更新时钟。 – dandavis

+0

我也喜欢这种方式,因为它意味着计时器可以在拍卖的最后10秒内更新到新的时间。即,如果新的出价在5秒内到达,则定时器可​​以重置为10秒。 –

回答

0

对于定时器的值,保持在服务器端本身更新每秒当地的计时器。每当有用户进来时,给他这个价值和定时器的总价值。然后,客户端将根据dandavis的评论在本地启动自己的定时器,但在服务器端保留一些时间间隔,如15或10秒,服务器将广播当前定时器值,以便客户端将相应地同步。

总之,服务器会在10(n:你决定)秒后每播放一次,但它会在本地更新每秒定时器变量。每当客户端进入时,它将获得总计时器值和当前计时器值。

广播当前出价的其余功能可以以正常方式完成。

+0

感谢您的回应,这有助于让服务器不必每秒运行一次,并在500个用户在线时每秒发送500个数据包。 –

+0

嗨谢恩,我也在使用node.js + socket.io拍卖脚本。已经使用PHP,MySQL开发了网站。我需要知道如何braodcast倒计时器所有拍卖,但目前只有一个拍卖会被出售。我已经在网站上实现了节点+ socket.io,但超过500个用户访问该站点意味着计时器没有加载,服务器没有响应。您提到** setinterval **被使用过,我也在每隔一秒播放一次向客户提供的数据如何获得与时间,价格等相关的拍卖数据?可以帮助我解决问题。 –