在《icomet消息推送原理与常用指令》这篇文章中介绍了icomet的消息推送实现方式但是未涉及到安全认证,本文会介绍token认证的实现方式。首先需要在配置文件icomet.conf中开启token认证(将auth项由none修改为token),修改为如下配置:

......
front:
        listen: 0.0.0.0:8100
        # none|token
        auth: token
        max_channels: 100000
......

然后重新启动icomet服务

./icomet-server icomet.conf -s rstart -d

点击观看视频教程

这样就开启了token认证,开启token后客户端无法直接订阅到消息,需要在原有地址上增加token这个参数,token是在创建频道的接口中返回的,创建频道API:

http://服务器地址:端口/sign?cname=频道名称[&expires=60]

其中可加可选参数过期时间,这样请求后会返回一个token,数据格式为:

{
    "type": "sign",
    "cname": "a",
    "seq": 8,
    "token": "47463a751dfe1609739198985a260138",
    "expires": 30,
    "sub_timeout": 30
}

只要有客户端和服务器处于连接状态token是不会发生变化的,客户端在订阅是需要增加token才可以订阅到信息。