package top.paakciu.core;
import io.netty.channel.Channel;
import top.paakciu.client.listener.ClientEventListener;
import top.paakciu.config.IMConfig;
import top.paakciu.mbg.model.GroupInfo;
import top.paakciu.mbg.model.GroupMsgOffline;
import top.paakciu.utils.info.ChannelUser;
import top.paakciu.utils.ExtraPacketHelper;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* @author paakciu
* @ClassName: test
* @date: 2021/3/18 16:27
*/
public class test implements ClientEventListener {
static final Client CLIENT=Client.defaultClient;
// static ChannelUser this_channeluser=null;
//static Channel this_channel=null;
private void printFail(){System.out.println("发送到服务器失败");}
private void printSuccess(){System.out.println("发送到服务器成功");}
public static void main(String[] args) {
new test().onCreate();
}
public void onCreate()
{
/**
* 初始化的方法lisntener里面的方法已经是异步方法了,不需要另外创建线程
* 线程池参数可调节IMconfig文件中的CLIENT_THREAD_POOL_NUM参数
* {@link top.paakciu.config.IMConfig}
*/
Client.defaultClient.initClienConnection(IMConfig.HOST,IMConfig.PORT).setEventListener(new ClientEventListener() {
@Override
public void onInitChannel() {
//TODO 初始化连接的时候要处理的事情
}
@Override
public void onConnectSuccess(Channel channel) {
//TODO 连接成功后要做的事情
//System.out.println("连接成功s");
//register();
Scanner sc=new Scanner(System.in);
System.out.println("请输入登录的账号密码:");
String name=sc.nextLine();
String psw=sc.nextLine();
login(name,psw);
}
@Override
public void onConnectFail(int retry) {
//TODO 连接失败后要做的事情
}
});
}
public void register(){
/**
* 要注意连接成功之后,才能调用该方法进行注册
* 关于注册事件的回调会在Netty的异步线程中进行,不需要建立线程。
* 链式调用!
*/
Client.defaultClient.register("username1","password1")
.setSendFailListener(()-> {
//TODO 发送服务器失败要做的事
System.out.println("发送至服务器失败");
})
.setSendSuccessListener(()->{
//TODO 发送服务器成功要做的事
System.out.println("发送至服务器成功");
})
.setFailListener(str -> {
//TODO 服务器返回结果为失败,str为返回失败的消息
System.out.println(str);
})
.setSuccessListener(str -> {
//TODO 服务器返回结果为成功,str为返回成功的消息
System.out.println(str);
});
}
public void login(String username,String password) {
Client.defaultClient.login(username,password)
.setSendFailListener(()-> {
//TODO 发送服务器失败要做的事
System.out.println("发送至服务器失败");
})
.setSendSuccessListener(()->{
//TODO 发送服务器成功要做的事
System.out.println("发送至服务器成功");
})
.setFailListener(str -> {
//TODO 服务器返回结果为失败,str为返回失败的原因-如“账号密码校验失败”
System.out.println(str);
})
.setSuccessListener(channelUser -> {
//TODO 服务器返回结果为成功,str为返回成功 channelUser对象,包括惟一标识号id,和账号名
System.out.println(channelUser);
System.out.println("id="+channelUser.getUserId());
//监听器
setSendListener();
setCreateGroupListener();
setJoinGroupListener();
setErrorListener();
setQuitGroup();
setGetGroupmemeberslistener();
setGetGroupListListener();
setGroupMessageListener();
setGroupOfflineMessageListener();
ExtraListAdd();
setExtraGroupMessageListener();
setGetInfoAndFriendsListener();
setExtraSingleListener();
new Thread(()->{
Scanner sc = new Scanner(System.in);
//聊天模拟
while (true) {
System.out.println("1单聊测试,2群聊测试,3加群测试,4退群测试,5建群测试,6登出");
int x=sc.nextInt();
if(x==1){
System.out.println("请输入toid msg:");
Long toid = sc.nextLong();
String msg = sc.next();
send(toid,msg);
}
if(x==2){
System.out.println("请输入toid msg:");
Long toid = sc.nextLong();
String msg = sc.next();
sendGroupMessage(toid,msg);
}
if(x==3){
System.out.println("请输入groupid:");
Long groupid = sc.nextLong();
joinGroup(groupid, channelUser.getUserId());
}
if(x==4){
System.out.println("请输入groupid:");
Long groupid = sc.nextLong();
quitGroup(groupid, channelUser.getUserId());
}
if(x==5){
System.out.println("请输入群聊名称:");
String GroupName = sc.next();
List<Long> list=new ArrayList<>();
list.add(channelUser.getUserId());
CreateGroup(list,GroupName);
}
if(x==6){
logout();
}
// System.out.println("请输入togroupid msg:");
// Long togroupid = sc.nextLong();
// String msg = sc.next();
// sendGroupMessage(togroupid,msg);
// System.out.println("请输入任意字符串,测试添加好友");
// Long id1=sc.nextLong();
// Long id2=sc.nextLong();
// deleteFriends(id1,id2);
// System.out.println("请输入任意字符串,测试获取好友列表");
// sc.nextLine();
// getAllFriends(channelUser.getUserId());
// System.out.println("请输入任意字符串,测试获取在线好友列表");
// sc.nextLine();
// getOnLineFriends(channelUser.getUserId());
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于java实现的IM即时通信模块源码+项目说明.zip 基于java实现的IM即时通信模块,尽量避免使用框架工具,以便移植(主要是希望安卓端也能用,或者其他能运行java虚拟机的嵌入式设备) 这是毕业设计的部分代码,写得还不错,但是对系统的增减都比较方便,可以作一定的参考。 【实现功能】 实现客户端登录 自由协议 协议编码解码器 客户端与服务端收发消息 pipeline 和 channelHandler 解决拆包粘包的问题 热插拔和客户端身份校验 客户端互聊 性能优化 消息收发 心跳与空闲检测 群聊的发起和通知 群聊消息的收发 群成员管理 透传消息(控制消息),这个可以使用Extra消息拓展,但是目前没必要 离线消息的拉取 拓展消息类ExtraMessage
资源推荐
资源详情
资源评论
收起资源包目录
课程设计基于java实现的IM即时通信模块源码+项目说明.zip (214个子文件)
.gitignore 378B
.gitignore 228B
IM.iml 1KB
test.java 29KB
DefaultClient.java 18KB
NormalMsgExample.java 17KB
GroupMsgOfflineExample.java 15KB
GroupMsgExample.java 14KB
NormalMsgOfflineExample.java 13KB
UserExample.java 11KB
GroupInfoExample.java 11KB
GroupMembersExample.java 11KB
FriendExample.java 11KB
GetInfoAndFriendRequestHandler.java 10KB
JoinGroupRequestHandler.java 9KB
NettyClient.java 9KB
PullMessageRequestHandler.java 8KB
MessageRequestHandler.java 8KB
PacketsCommandMapping.java 6KB
GroupMessageRequestHandler.java 6KB
NettyServer.java 6KB
NormalMessageService.java 6KB
GroupsHelper.java 5KB
CreateGroupRequestHandler.java 5KB
LoginRequestHandler.java 5KB
GetGroupMembersRequestHandler.java 4KB
ExtraPacketHelper.java 4KB
AttributesHelper.java 4KB
LoginResponseHandler.java 4KB
GroupMembersService.java 4KB
PullMessageRequestPacket.java 4KB
GetInfoAndFriendsManage.java 4KB
GroupMessageOfflineService.java 4KB
GroupMessageService.java 3KB
PullMessageManage.java 3KB
GetInfoAndFriendResponseHandler.java 3KB
Sqlutils.java 3KB
QuitGroupRequestHandler.java 3KB
CommentGenerator.java 3KB
RegisterResponseHandler.java 3KB
NormalMessageManage.java 3KB
PacketsHandlerMapping.java 3KB
test02.java 3KB
ExtraGroupRequestHandler.java 3KB
PacketCodec.java 3KB
OffLineGroupMessageRequestHandler.java 3KB
ExtraRequestHandler.java 3KB
RegisterRequestHandler.java 2KB
BaseManageWith4Function.java 2KB
PreFrameDecoder.java 2KB
IMConfig.java 2KB
BaseManageWithHandlerFunction.java 2KB
UserService.java 2KB
FriendsService.java 2KB
ExtraResponsePacket.java 2KB
MessageResponseHandler.java 2KB
GroupInfoService.java 2KB
NormalMsg.java 2KB
GetGroupListRequestHandler.java 2KB
NormalMessageOfflineService.java 2KB
PaakciuFuture.java 2KB
OffLineMessageRequestHandler.java 2KB
BaseManageWith2Function.java 2KB
ExtraRequestPacket.java 2KB
CreateGroupManage.java 2KB
SuccessListener.java 2KB
GroupMsg.java 2KB
GetGroupMembersResponsePacket.java 2KB
AuthorityHandler.java 2KB
CreateGroupResponsePacket.java 2KB
ExtraGroupResponsePacket.java 2KB
GroupMsgOffline.java 2KB
BasePacket.java 1KB
test04.java 1KB
MessageResponsePacket.java 1KB
GroupMessageManage.java 1KB
GroupMessageResponsePacket.java 1KB
JoinGroupResponsePacket.java 1KB
NormalMsgMapper.java 1KB
Generator.java 1KB
test05.java 1KB
GroupMsgMapper.java 1KB
NormalMsgOffline.java 1KB
LoginRequestPacket.java 1KB
OffLineGroupMessageResponsePacket.java 1KB
ClientIdleDetectionHandler.java 1KB
JoinGroupResponseHandler.java 1KB
ServerIdleDetectionHandler.java 1KB
ExtraManage.java 1KB
ExtraGroupManage.java 1KB
ExtraGroupRequestPacket.java 1KB
HeartBeatTimerHandler.java 1KB
GroupMembers.java 1KB
Friend.java 1KB
M2MPacketCodecHandler.java 1KB
User.java 1KB
NormalMsgOfflineMapper.java 1KB
GroupInfo.java 1KB
GetGroupMembersManage.java 1KB
GroupMsgOfflineMapper.java 1KB
共 214 条
- 1
- 2
- 3
资源评论
onnx
- 粉丝: 9972
- 资源: 5626
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 国际象棋检测11-YOLO(v7至v9)、COCO、Darknet、Paligemma、VOC数据集合集.rar
- 使用Python和matplotlib库绘制爱心图形的技术教程
- Java外卖项目(瑞吉外卖项目的扩展)
- 必应图片壁纸Python爬虫代码bing-img.zip
- 基于Pygame库实现新年烟花效果的Python代码
- 浪漫节日代码 - 爱心代码、圣诞树代码
- 睡眠健康与生活方式数据集,睡眠和生活习惯关联分析()
- 2024~2025(1)Oracle数据库技术A卷-22软单、软嵌.doc
- 国际象棋检测10-YOLO(v5至v9)、COCO、CreateML、Paligemma数据集合集.rar
- 100个情侣头像,唯美手绘情侣头像
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功