Web上如何实现用户“online"状态的判断,go如何实现?

有些web网站上标注了用户是否在线,这个是怎样实现的呢?比如V2ex对用户online就有标识,还有web.telegram.org

求Go这样的开源例子,谢谢!


是不是这样:
online-打开网页,更新下数据库为online
offline- 怎么判断?


咱们这里是不是也弄个在线标识?刷存在感!

共 5 个回复


baiyuxiong

这个实时性要求又不高,上次访问时间在10分钟之前就算不在线了。

# 0

yue

@baiyuxiong 不应该这样吧?我挂着网页就应该一直算在线呀

# 1

jimmykuu

你可以看下 studygolang 的源码,它也有在线统计的。

一般网站,如果发生一个请求,可以记录下这个时间,然后再开一个 goroutine 来进行统计,比如发现是十分钟内请求过的,可以算作一个在线人员。

如果一个页面一直开着,十分钟没有任何其他点击,那可以算他下线了。

# 2

baiyuxiong

@yue http数据请求结束连接就断掉了。你要一直挂着,和服务器没有任何数据交互,服务器根本没办法知道客户端的情况。

# 3

yue

@baiyuxion 是呀,大多好像是ajax轮询发消息给服务器来判断用户状态,没有特别好的轻盈办法。

@jimmykuu studygolang源码有些高深,小白我得慢慢读呀。它那里是统计整站的,我再学习下websocket,看如何把chat用户的在线和普通页面用户的在线结合起来。

谢谢二位!

# 4