之前写过一篇关于netty的blog,经过几次梳理,hydra项目的代码基本稳定了。

hydra项目分为client和server两部分。

client

client用于weboscket的功能和性能测试,短时间可以轻松建立50000个连接。

可以通过参数指定subscribe的字符串,也可以定期发送指令维持heartbeat。

如果server返回的数据是gzip压缩的binary数据,也是支持解压缩的。

我尝试用client订阅了huobi的行情数据,配置启动参数就可以完成。其他同类网站也是没有问题的。

当然不要用它来对别人的网站进行压力测试,会被封IP的。

server

server主要是一个推送服务的基础框架。

推送的消息来源是从redis的topic中拉去的,采用redission的client。

从消息中提取部分字段信息,构建nameSpace,通过ChannelManager进行推送。

推送的消息格式,目前只支持text,未来需要考虑支持binary的压缩格式。

除了以nameSpace为基础的推送外,还实现了基于Uid的推送模式,之前的blog已经介绍过原理了。

总结

websocket推送可以应用的领域非常广,弹幕、聊天室、股票行情软件等等。

基于hydra的基础,后面要尝试一下netty的优化实践。