netty简单聊天程序之单聊

代码示例

  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. 效果

转载于:https://my.oschina.net/findurl/blog/2396989

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值