【服务器集群程序介绍】 1、imserver.exe 概要介绍:IM通信服务 默认端口:8210 功能说明: 1、转发用户间的点对点消息; 2、转发群组消息; 3、群组的创建、销毁以及将指定用户加入到指定群组; 如果在线用户数量超出单台imserver的配置,则需要建立IM服务器集群,不同的用户会登录在不同的IM服务器上。 在集群模式下,需要importal.exe和improxy.exe程序的支持。 假设一台imserver支持10万用户,你的上层业务需要支持百万级在线聊天,则需要10台IM服务器。此时这10台服务器 的管理和通信需要如下两个服务支持。 2、importal.exe 概要介绍:负载均衡服务 默认端口:8510 功能说明: 1、实时更新集群中所有聊天服务器上的用户状态(在线、离线); 2、提供HTTP接口,用于查询集群中所有IM服务器的地址,以及当前每台服务器上在线用户数; 3、提供HTTP接口,用于查询指定用户的在线状态; 使用说明: 1、上层业务通过“/importal/getimserverlist.do”接口获取集群中所有IM服务器列表; 2、根据当前IM服务器上登录的用户数量,来决定用户登录到哪台IM服务器上; 3、improxy.exe 概要介绍:消息转发服务。 功能说明: 1、连接importal服务,获取集群中所有imserver服务器地址; 2、转发登录在不同imserver服务器上的用户消息和群组消息; 【如何建立IM服务器集群】 傻瓜式部署:只需一分钟,一个配置项。 1、部署importal服务,双击importal.exe即可。 2、配置imserver上的imconfig.ini文件 通过imconfig.ini配置文件中的PortalServer字段设置portal服务器的地址。如:PortalServer=127.0.0.1:8510。 imserver服务器启动会读取该配置项,并连接到importal服务上。 3、部署improxy服务,双击improxy.exe即可,improxy会通过importal获取所有IM服务器。 注意:imserver、importal、improxy最好分别部署在不同的服务器上。 【配置文件介绍】 采用windows的INI格式进行服务器参数配置,INI文件由节、键、值组成。 节    [section] 参数(键=值)    name=value 注解    注解使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。 详见imconfig.ini中注释,如果该文件为空或不存在,则使用缺省值。 =======================使用说明======================== 一、如何登录imserver 1、启动imserver imserver启动后默认端口是8210。 2、使用websocket协议进行登录 【URL】: ws://ip:port/chatServer.ws 【参数】 2.1、uid:必选参数,你的上层业务中用户的唯一id; 2.2、name:可选参数,用户昵称 例如:ws://127.0.0.1:8210/chatServer.ws?uid=100&name=Softlee 二、IM的消息格式 IM消息体采用json格式,系统保留字段如下: 1、t 【类型】 整形 【说明】 消息接收者类型,表示接收者的是用户的uid还是群组的gid。 t字段可以有下面两个值: 1:表示“r”字段为用户uid; 2:表示“r”字段为群组gid。 2、f 【类型】 字符串 【说明】 消息发送人的uid,登录imserver服务器时通过uid参数带入的用户唯一id。 3、r 【类型】 字符串 【说明】 消息接收者id,如果t字段为1,则表示是用户uid;如果t为2,则表示是群组gid。 4、c 【类型】 字符串 【说明】 消息内容 5、m 【类型】 整形 【说明】 消息内容(c字段)的类型; 某字段可以有下面值: 1:保留值,表示文本消息; -1:保留值,用户上线通知; -2:保留值,用户下线通知。 【备注】 用户可扩展自己的消息类型字段,例如:2,表示图片,3、表示视频;4、表示url;5、表示文件名等 6、n 【类型】 字符串 【说明】 用户的昵称,登录imserver服务器时通过可选参数name带入的用户昵称。 7、d 【时间】 整形 【说明】 消息发送的时间。 三、如何发送IM消息 假设用户A要给用户B发送消息,A的uid为"uid200",B的uid为"uid300", A向B发送一个文本消息"hello",则需要构造一个json字符串,并发送给服务器。 如下: {"t":1, "f":"uid200", "r":"uid300", "c":"hello!", "m":1} 四、imserver服务器的HTTP接口 imserver不仅提供了聊天服务,也同时提供了HTTP接口,用于查询和群组的创建。 1、创建群组 【接口】 /im/creategroup.do 【参数】 1、groupID:必选参数,群组的唯一ID; 2、groupName:可选参数,群组名称; 2、销毁群组 【接口】 /im/destroygroup.do 【参数】 groupID:必选参数,群组的唯一ID; 3、将指定用户加入到指定群组 【接口】 /im/addgroup.do 【参数】 1、uid:必选参数,用户的唯一id 2、groupID:必选参数,群组的唯一ID; 4、将指定用户移除出指定群组 【接口】 /im/removegroup.do 【参数】 1、uid:必选参数,用户的唯一id 2、groupID:必选参数,群组的唯一ID; 5、查询指定用户是否在线 【接口】 /im/checkonline.do 【参数】 uid:用户的唯一id 接口调用返回值为json格式,ret为0表示接口调用成功。 注:参数名称不区分大小写。 五、如何发送群组消息 1、调用HTTP的"/im/creategroup.do"接口创建一个群组,假设群组ID为"gid100"; 2、调用HTTP的"/im/addgroup.do"接口将群聊用户添加到"gid100"中; 3、构建json消息体,比如用户A("uid100")发送群消息"hello",消息体如下: {"t":2, "f":"uid200", "r":"gid100", "c":"hello!", "m":1}