Work Flow
![]()
Build and Run
Source Code:
https://github.com/ideawu/icomet.git
https://github.com/ideawu/icomet/archive/master.zip
Compile:
make
Run:
./icomet-server icomet.conf
# or run as daemon
./icomet-server -d icomet.conf
Stop:
./icomet-server icomet.conf -s stop
Test:
curl -v "http://127.0.0.1:8100/sub?cname=12&seq=1"
# open another terminal
curl -v "http://127.0.0.1:8000/push?cname=12&content=hi"
Config File
$cat icomet.conf
# icomet config file
# MUST indent by TAB
pidfile = ./icomet.pid
logger:
level: debug
#output: stdout
output: ./logs/log.txt
rotate:
size: 1000000000
admin:
#listen: 127.0.0.1:8000
listen: 0.0.0.0:8000
# allowed ip prefix, one ip each line
allow: 127.0.0.1
allow: 192.168
deny: all
#allow: all
front:
listen: 0.0.0.0:8100
# none|token
auth: none
max_channels: 100000
max_subscribers_per_channel: 16
# number of messages buffered
channel_buffer_size: 10
# in seconds
channel_timeout: 30
# the idle time to send noop message, in seconds
polling_timeout: 30
Wiki
Long Polling
Request:
http://127.0.0.1:8100/poll?cname=$channel&seq=$next_seq&token=$token
Response:
icomet_cb([{type: "data", cname: "a", seq: "1", content: "a"}]);
icomet_cb({type: "data", cname: "a", seq: "1", content: "a"});
Push Message
Request:
http://127.0.0.1:8000/push?cname=$channel&content=$content
Response:
{type: "ok"}
Create Channel
Request:
http://127.0.0.1:8000/sign?cname=$channel[&expires=60]
Response:
{type: "sign", cname: "a", seq: 0, token: "36289dcb55bc35aa6893f7557b7fc28c", expires: 30, sub_timeout: 10}
Close Channel
Request:
http://127.0.0.1:8000/close?cname=$channel
Response:
Clear Channel Messages
Request:
http://127.0.0.1:8000/close?cname=$channel
Response:
Get Channel Info
Request:
http://127.0.0.1:8000/info
http://127.0.0.1:8000/info?cname=$channel
Response:
{"version": "0.2.2.1", "channels": 0, "subscribers": 0}
{"cname": "a", "subscribers": 0}
Check Channel
Request:
http://127.0.0.1:8000/check?cname=$channel
Response:
{"a": 1}
Broadcast Message
Request:
http://127.0.0.1:8000/broadcast?content=12345
Response: