对于signalr的一些思考

signalr,在没有html5的情况下,是通过js不断的轮询拿数据

是拉得到返回值时,再去请送。

但是要注意的是,假设有100个页面,对IIS有100的并发,但它并不会查100次数据庘。他对数据庘的访问频率是恒定的。

如果简单的实现效果的话,应该是这样

刚一个request发给服务端以后,并不是立刻去查数据庘,而是在等一个标量,如果这个标量为零,则等100毫秒,再访问,直到这个标量为1,就去某个地方取到数据。

比如取数据的频率为一秒一次,则就算有100个并发,在一秒内也只取一次数据庘,只是有的请求需要等1秒。


这种需求很适合于取某人最新信息。

假立有10个页面,都要实时显示最新的信息数。你用js去一直轮询。

那么,你发一个请求参数为userid=1.

实际上,他先看某个全局的集合有没有userid=1的key,如果没有,插一个进去,tag=0,插个时间戳

然后for循环,间隔500毫秒,看这个tag是否为1.

如果,有,且tag=0,更新时间戳。

如果有,tag=1,更新时间在2秒内的,拿走数据,2秒外的,更新为0.

再循环。

而有另外一个进程,或程序也在论询这个集合,他从上到下,看每一条记录,如果tag=0,则查数据库,给对应的userid赋上数据,更新tag=1.

这样短时间内密集查询的,只会查一次数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值