小白咨询workerman问题

frontlon

我使用workerman做了一个聊天室。

1.
我之前使用ajax轮询做的聊天室,在访问量大的情况下会挂掉。
我想知道workerman对于长轮询、短轮询来说,是否能有效减轻服务器压力?

2.
有一篇文章,我想直接推送所有内容(标题、时间、内容等),这样就不用去存储介质中读取数据了,节省了一次HTTP请求。可是这样会不会造成丢包现象或某个用户收不到的情况??
还是说仅仅推送一个文章id,用户收到文章id后去数据库读取显示比较稳妥些?

2698 4 0
4个回答

walkor

1、如果用workerman的话,建议直接长链接,就不用轮询了,单台服务器可支持10万在线(实际项目),性能是轮询无法比的

2、只要socket链接连着,并且网络没问题就可以收到推送。即使失败,也可以在刷新页面时判断下数据库是否有未读的消息。任何一个产品都无法保证消息都能100%到达,因为每个客户的客户端和网络环境都不一样。
建议只推送文章id,内容可能会很大,如果瞬间推送很多用户会占用很大的带宽,比如1W在线,文章10k,那瞬间就是1W_10k_8bit = 800M的带宽。

  • frontlon 2016-07-25

    谢谢大哥了!

    1.请问使用长连接是workerman默认的吗?还是得设置一下?

    2.我看文档里有这么个功能:如果用户收到消息后,返回一个状态,说明已经收到,如果没返回状态说明没收到,则重新发送。请问这个功能workerman自动开启了吗?
    请问是否有这方面的实例?

    我是小白,许多东西都不了解,烦扰大哥了!见谅!

walkor

1.请问使用长连接是workerman默认的吗?还是得设置一下?

没有这种设置,服务端和客户端都不关闭连接,那就是长链接。
建议你直接用workerman-chat改改就可以了

2.我看文档里有这么个功能:如果用户收到消息后,返回一个状态,说明已经收到,如果没返回状态说明没收到,则重新发送。请问这个功能workerman自动开启了吗?
请问是否有这方面的实例?

哪个文档有说这个东西?给个链接

  • 暂无评论
walkor

直接在回复里面写,评论里面框太小了,并且不好编辑

  • 暂无评论
frontlon

哪个文档有说这个东西?给个链接
额好吧,我是看其他网友发的帖子....

谢谢大哥了,基本都明白了!

  • 暂无评论
年代过于久远,无法发表回答
🔝