# impush **Repository Path**: loongchow_admin/impush ## Basic Information - **Project Name**: impush - **Description**: 即时推送,内置集群功能,支持TCP长连接,HTTP长连接,websocket等连接方式 详细使用说明 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://cooge.gitee.io/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 30 - **Created**: 2019-01-02 - **Last Updated**: 2023-09-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # im推送系统 简介: 本系统,主要用于即时推送,起源于公司用微信控制电视盒子的项目,内置集群功能,支持TCP长连接,HTTP长连接,websocket等连接方式 #### 使用方法: 1. 下载地址:go get -u gitee.com/cooge/impush 2. 配置好配置文件configure.ini,并与可执行文件放同一目录,运行即可 #### 配置说明 #### http配置 [HTTP] port:9090 http api接口配置,默认9090 #### TCP配置 [TCP] start:false port:4641 start:是否启动tcp长连接 false:不启用,true:启用 #### Websocket配置 [WS] start:false start:是否启用websocket #### http轮询推送配置 [EX] start: true model:C #N 或 C deadline:5 ##http轮训最长间隔时间,单位秒。超时则判定,用户下线 livetime:5 ##http连接阻塞时间,单位秒,尽可能设置长。N模式下,每隔livetime会断开重连一次;C模式下则是连接超时时间,根据浏览器的支持设定 start:是否启用 model:运行模式 N为普通模式,每隔livetime设定的时间,会断开重连。 C为chunked模式,几乎相当于tcp长连接模式,推荐使用该模式 #### 集群配置 [CLUSTER] start:false local.port:6571 remote.host:127.0.0.1 remote.port:6570 start:是否启用 local.port:推送系统之间连接的端口设置,当前系统开放的端口 remote.host:要连接的集群推送系统,如果要在集群系统中添加一台新机器,只需要连接其中任意一台机器即可 remote.port:配置要连接机器的端口号 #### 日志配置 [LOG] open:true path:log open:是否打印详细日志 path:日志保存路径 #### 客户端 java版 下载地址:https://gitee.com/cooge/impush/tree/1.0/client/java 初始化 IMClient mIMClient = new IMClient("127.0.0.1",4646); try { mIMClient.setUser("333333", "333333"); mIMClient.setMessageListener(new MessageListener() { @Override public void onReceiveMessage(Message msg) { try { log.info("信息接收",msg.getHead(MessageHeadConstant.FROM)+":"+new String(msg.getBody(),"UTF-8")+"\r\n"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }; } @Override public void onMessageSatus(String msgId, MessageStatus status) { log.info("信息回馈",status.name()); } @Override public void onExecStatus(ExecStatus status) { log.info("运行状态",status.name()); } }); mIMClient.start(); } catch (Exception e) { e.printStackTrace(); } 发送信息 String msgId = mIMClient.sendMessage("接收者ID","发送的信息"); js版 下载地址:https://gitee.com/cooge/impush/tree/1.0/client/js loop.html 中有使用例子 websocket版 下载地址:https://gitee.com/cooge/impush/tree/1.0/client/js websocket.html中有使用例子 #### 服务端API接口 首页: http://127.0.0.1:9090/ 查看服务器的基本信息 单用户信息发送: http://127.0.0.1:9090/sendmsg?id=123&msg=564654654654 id为要接受信息的用户 msg:要发送的信息 在线用户查看 http://127.0.0.1:9090/onlineuser?start=0&num=10 start 起始页页码 num 单页数量 go 语言map为无顺的,感觉这接口没啥意义 单个用户信息查看 http://127.0.0.1:9090/queryuser?id=333333 查看用户连接信息