国产开源⽹络编程框架t-io使⽤必备:极速开发器Tio.java Tio.java简介
为了让⽤户减少查API的时间,t-io把常⽤API以静态⽅法的形式汇集于⼀个类,这就是Tio.java
Tio.java本⾝并不实现过复杂的业务,各业务实现仍然分布在其它类中,Tio.java只是把⽤户关⼼的API集中起来,便于⽤IDE查⽽已
业务数据绑定
资源绑定是指把业务相关的数据和Tcp连接(即ChannelContext)关联起来,譬如ChannelContext-A代表了⽤户张三,张三的userid是333,就⽤下⾯的代码进⾏绑定
Tio.bindUser(ChannelContext-A, "333")
t-io⽬前内置了4种资源绑定,当然⽤户可以灵活使⽤这些绑定从⽽解决业务层所有的资源绑定问题,譬如可以给group加前缀”ios-“,从⽽标记这个⽤户使⽤的是ios,譬如
Tio.bindGroup(ChannelContext-A, "333");
Tio.bindGroup(ChannelContext-A, "ios-" + "333");
内置的4种资源绑定⽅法中,⼀个ChannelContext是可以绑定到多个groupid的,其它三个绑定都是⼀对⼀或多对⼀的关系,也就是说⼀个ChannelContext可以同时属于group-a,group-b… …group-n
下⾯贴⼀下这4个资源绑定的源代码
/**
* 绑定业务id
* @param channelContext
* @param bsId
* @author tanyaowu
*/
public static void bindBsId(ChannelContext channelContext, String bsId) {
channelContext.tioConfig.bsIds.bind(channelContext, bsId);
}
/**
* 绑定组
* @param channelContext
* @param group
* @author tanyaowu
*/
public static void bindGroup(ChannelContext channelContext, String group) {
ups.bind(group, channelContext);
}
/**
* 绑定token
* @param channelContext
* @param token
* @author tanyaowu
*/
public static void bindToken(ChannelContext channelContext, String token) {
kens.bind(token, channelContext);
}
/**
* 绑定⽤户
* @param channelContext
* @param userid
* @author tanyaowu
*/
public static void bindUser(ChannelContext channelContext, String userid) {
channelContext.tioConfig.users.bind(userid, channelContext);
}
业务数据解绑
既然有绑定,就肯定会有解绑,这是个和绑定相反的操作,所以话不多说,直接贴出不长的源代码/**
* 解绑业务id
* @param channelContext
* @author tanyaowu
*/
public static void unbindBsId(ChannelContext channelContext) {
channelContext.tioConfig.bsIds.unbind(channelContext);
}
/**
* 与所有组解除解绑关系
* @param channelContext
* @author tanyaowu
*/
public static void unbindGroup(ChannelContext channelContext) {
ups.unbind(channelContext);
}
/
**
* 与指定组解除绑定关系
* @param group
* @param channelContext
* @author tanyaowu
*/
public static void unbindGroup(String group, ChannelContext channelContext) {      ups.unbind(group, channelContext);
}
/**
* 解除channelContext绑定的token
java学习资源
* @param channelContext
* @author tanyaowu
*/
public static void unbindToken(ChannelContext channelContext) {
kens.unbind(channelContext);
}
//    TioConfig.ipBlacklist
/**
* 解除channelContext绑定的userid
* @param channelContext
* @author tanyaowu
*/
public static void unbindUser(ChannelContext channelContext) {
channelContext.tioConfig.users.unbind(channelContext);
}
/**
* 解除userid的绑定。⼀般⽤于多地登录,踢掉前⾯登录的场景
* @param tioConfig
* @param userid
* @author: tanyaowu
*/
public static void unbindUser(TioConfig tioConfig, String userid) {
tioConfig.users.unbind(tioConfig, userid);
}
异步发送
异步发送,指的是业务层把Packet丢给t-io后⽴即返回,返回时Packet并没有被发送,⽽只是提交到了待发送队列异步发送都是以send开头的,这个API有点多,贴代码有点长,⽤图⽚展⽰更舒适些
阻塞发送
阻塞发送:t-io把Packet送给对⽅后才返回
阻塞发送都是以bSend开头的,这个API有点多,贴代码有点长,⽤图⽚展⽰更舒适些
如何获取ChannelContext
前⾯的业务数据绑定,⼀个重要的⽬的就是要根据那些业务标识来获取ChannelContext,譬如你绑定了⼀个userid,那么后⾯就可以通过这个userid来获取ChannelContext
获取ChannelContext的API都是以get开头的,这个API有点多,贴代码有点长,⽤图⽚展⽰更舒适些
断开连接和移除连接
断开连接都是以close开头的⽅法,指的是把当前已经连上的TCP连接断开掉