文档章节

netty简单聊天程序之单聊

Cobbage
 Cobbage
发布于 2018/11/01 23:22
字数 222
阅读 11
收藏 0

代码示例

  1. 根据netty的websoctet实现单聊
这里在传输的数据格式用文本转JSON的

@Override
	protected void channelRead0(ChannelHandlerContext ctx,
		  TextWebSocketFrame msg) throws Exception { // (1)
		  ObjectMapper mapper = new ObjectMapper();
		  Message message = mapper.readValue(msg.text(), Message.class);
		  
		  Channel incoming = ctx.channel();
		  if(null!=message) {
			  if(ChatType.BIND.equals(message.getCmd())){//绑定上线
				  ChannelManager.addChannel(message.getFrom(), incoming);
			  }else if(ChatType.LEAVE.equals(message.getCmd())) {
				  ChannelManager.removeChannelByCode(message.getFrom());
			  }else if(ChatType.SINGLE.equals(message.getCmd())) {
				  message.setMsg(HtmlUtils.htmlEscape(message.getMsg()));
				  if(null!=ChannelManager.getChannel(message.getAccept())) {
				    ChannelManager.getChannel(message.getAccept()).writeAndFlush(new TextWebSocketFrame(mapper.writeValueAsString(message))); 
				  }else {
					 String from=message.getFrom();
					 message.setFrom(message.getAccept());
					 message.setAccept(from);
					 message.setMsg("["+message.getFrom()+"]未上线");
					 incoming.writeAndFlush(new TextWebSocketFrame(mapper.writeValueAsString(message)));
				  }
			  }else if(ChatType.GROUP.equals(message.getCmd())) {
				  message.setMsg(HtmlUtils.htmlEscape(message.getMsg()));
			  }else {
				  System.out.println("未识别的命令");
			  }
		  }
	}
  1. 简单的数据格式
    private String cmd;//1.绑定上线 2.下线 3.单聊 4.群聊
	private String from;//用户ID
	private String accept;//接受ID
	private String group;//组ID
	private String msg;//文本信息
  1. 效果

© 著作权归作者所有

共有 人打赏支持
Cobbage

Cobbage

粉丝 51
博文 146
码字总数 73307
作品 1
闵行
QA/测试工程师
私信 提问
琪琪IM/qiqiim-server

QIQIIM 提供简单快捷的IM方案,快速打造在线IM,可用于公司内网、外网通讯,客服系统等,实现了socket,websocket,能和安卓、IOS应用结合使用,可用于任何商业、个人作品中,请保留作者信息,...

琪琪IM
2017/11/24
0
0
在线 IM 解决方案--QIQI-IM

QIQIIM 提供简单快捷的 IM 方案,快速打造在线 IM 方案,可用于公司内网、外网通讯,客服系统等,实现了 socket, websocket,可用于任何商业、个人作品中,请保留作者信息,如果项目帮到了您...

琪琪IM
2017/11/24
3.3K
4
Netty+MUI从零打造一个仿微信的高性能聊天项目,兼容iPhone/iPad/安卓

要说到微信,我相信是个人都应该知道,几乎人人都会安装这款社交APP吧,它已经成为了我们生活中不可缺少的一份子。 我记得我上大学那会刚接触Java,做的第一个小项目就是基于J2SE的聊天室,使...

风间影月
2018/07/30
0
0
netty入门笔记

尝试一下helloword demo -->官方HelloWord -->简书的入门级netty聊天demo 地址:https://www.jianshu.com/p/216881b0573d 2.netty入门级群聊demo,发现有3个问题 问题1:没有显示用户的名字 (现...

谜男amu
2018/01/23
4
0
采用mqtt协议实现即时通讯, 该如何设计topic?

**一. 以下是我的逻辑, 请各位前辈,哥哥们帮忙看看. 是否可行. 有没有更好的方案?** 1. 点对点聊天, 可以让每个用户都有一个属于自己的topic. 每个用户上线了都订阅自己的topic. 下面假设有用...

plugin
2016/01/31
7.3K
2

没有更多内容

加载失败,请刷新页面

加载更多

Visual Studio 2017对xp的支持

等待VS2017安装程序配置结束会,会出现VS2017安装组件和工具配置界面,勾选工作负载左侧的“使用C++的桌面开发”组件和右侧的“对C++的Windows XP支持”、“MFC和ALT支持(x86和x64)”和“I...

simpower
26分钟前
0
0
VMware vSphere 服务器虚拟化部署安装图解

转载来源 :talkwithtrend :https://mp.weixin.qq.com/s/OJUINggNmiasooXDykHkow 一、VMware vSphere部署的前期规划要点 1、如何利用现在的设备架构虚拟化环境 在虚拟化过程中,用户大多会考...

寰宇01
26分钟前
2
0
mysql图表统计,补全日期

SELECT od.date, SUM(od.money)FROM ( SELECT SUM(money) money, DATE_FORMAT(create_time, '%Y-%m-%d') date FROM ......

时刻在奔跑
26分钟前
2
0
判断某一日期在另外一个日期之前

1.调用方式 oneDate.compareTo(anotherDate); 2.函数源码 /** * Compares two Dates for ordering. * * @param anotherDate the <code>Date</code> to be compared.......

hengbao5
45分钟前
1
0
docker 容器开发

package mainimport ("fmt""log""os""os/exec""syscall")/*func main(){cmd:= exec.Command("sh")cmd.SysProcAttr=&syscall.SysProcAttr{Cloneflags:sys......

whhbb
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部