当前位置: 首页 > news >正文

企业网站备案名称wordpress插件安装目录下

企业网站备案名称,wordpress插件安装目录下,商城系统有哪些,买车平台十大排名9.1.5、QQ登陆聊天功能(服务端推送新闻、离线留言和文件) 9.1.5.1、服务端推送新闻 1、需求分析 2、思路分析 3、代码实现 QQServer: 1)cn.com.agree.qqserver.service.SendNewsToAllClient package cn.com.agree.qqserver.s…

9.1.5、QQ登陆聊天功能(服务端推送新闻、离线留言和文件)

9.1.5.1、服务端推送新闻
1、需求分析
在这里插入图片描述
2、思路分析
在这里插入图片描述

3、代码实现
QQServer:
1)cn.com.agree.qqserver.service.SendNewsToAllClient

package cn.com.agree.qqserver.service;import cn.com.agree.qqcommon.Message;
import cn.com.agree.qqcommon.MessageType;
import cn.com.agree.stream.MyObjectOutputStream;
import cn.com.agree.util.Utility;
import lombok.extern.slf4j.Slf4j;import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;/*** @version 1.0* @ClassName SendNewsToAll* @Description TODO 类描述* @date 2024/1/12  11:37 上午**/
@Slf4j
public class SendNewsToAllClient implements Runnable {@Overridepublic void run() {while (true) {//构建消息对象Message message = new Message();message.setSender("服务器");message.setMsgType(MessageType.MESSAGE_ONLINEAll_MS);Scanner scanner = new Scanner(System.in);log.debug("请输入要推送的服务器消息(输入exit退出):");String news = scanner.next();if("exit".equals(news)){log.debug("服务器推送线程已退出");break;}message.setContent(news);message.setSendTime(new Date().toString());log.debug(message.getSender()+" 对大家说: "+message.getContent());//遍历服务端所有的用户id得到对应的线程socket转发给对应的客户端Map<String, ServerConnectClient> hm = ManageServerConnectClient.getHm();Iterator<String> iterator = hm.keySet().iterator();while (iterator.hasNext()) {String userId = iterator.next().toString();try {ObjectOutputStream oos = new MyObjectOutputStream(ManageServerConnectClient.getServerConnectClient(userId).getSocket().getOutputStream());oos.writeObject(message);} catch (IOException e) {e.printStackTrace();}}}}
}

2)cn.com.agree.qqserver.service.qqServer

 while (true) {socket = serverSocket.accept();//获取来自客户端发送过来到用户对象log.debug("socket Client连接成功");new Thread(new SendNewsToAllClient()).start();ObjectInputStream bis = new MyObjectInputStream(socket.getInputStream());User user = (User) bis.readObject();//获取输出流对象写入返回给客户端的消息ObjectOutputStream oos = new MyObjectOutputStream(socket.getOutputStream());og.debug("user:{}",user);Message message = new Message();...
}

4、运行效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.1.5.2、离线留言和文件

1、需求分析
在这里插入图片描述
2、思路分析
在这里插入图片描述
3.1、代码实现(发送离线消息)
1)cn.com.agree.qqserver.service.ManageServerConnectClient

 private static  Map<String, List<Message>> notOnlineMessages = new ConcurrentHashMap<>();public static  void addNotOnlineMessage(String getterId, List<Message> messages){notOnlineMessages.put(getterId, messages);}public static List<Message> getNotOnlineMessage(String getterId) {return notOnlineMessages.get(getterId);}

2)cn.com.agree.qqserver.service.ServerConnectClient

case MessageType.MESSAGE_COMM_MS:log.debug("message:{}", message);log.debug(message.getSender() + " 对 " + message.getGetter() + " 说: " + message.getContent());ServerConnectClient connectClient = ManageServerConnectClient.getServerConnectClient(message.getGetter());if(connectClient==null){//做离线消息处理,将数据保存到数据库(这里保存到Map中)if(ManageServerConnectClient.getNotOnlineMessage(message.getGetter())==null){List<Message> messages = new ArrayList<>();messages.add(message);                    ManageServerConnectClient.addNotOnlineMessage(message.getGetter(),messages);}else{                      ManageServerConnectClient.getNotOnlineMessage(message.getGetter()).add(message);}}else {//转发消息ObjectOutputStream oos2 = new MyObjectOutputStream(connectClient.getSocket().getOutputStream());oos2.writeObject(message);//如果用户不在线,可以保存到数据库做离线转发}break;

3) cn.com.agree.qqserver.service.qqServer

 //去服务端查询是否有来自他的消息,有的话转发给对应的用户List<Message> notOnlineMessage = ManageServerConnectClient.getNotOnlineMessage(user.getUserId());if(notOnlineMessage!=null&&notOnlineMessage.size()>0){for (Message message1 : notOnlineMessage) {ObjectOutputStream oos2 = new MyObjectOutputStream(socket.getOutputStream());oos2.writeObject(message1);}}

4.1、效果演示
在这里插入图片描述
在这里插入图片描述
上线后收到消息
在这里插入图片描述
3.2、代码实现(发送离线文件)

 case MessageType.MESSAGE_FILE_MESSAGE://log.debug("message:{}", message);log.debug(message.getSender()+" 给 "+message.getGetter()+" 发送了 "+message.getSrc()+" 到我的电脑的 "+message.getDesc()+" 路径");ServerConnectClient serverConnectClient = ManageServerConnectClient.getServerConnectClient(message.getGetter());if(serverConnectClient==null){//做离线消息处理,将数据保存到数据库(这里保存到Map中)if(ManageServerConnectClient.getNotOnlineMessage(message.getGetter())==null){List<Message> messages = new ArrayList<>();messages.add(message);ManageServerConnectClient.addNotOnlineMessage(message.getGetter(),messages);}else{ManageServerConnectClient.getNotOnlineMessage(message.getGetter()).add(message);}}else {//进行转发给客户端ObjectOutputStream oos4= new MyObjectOutputStream(serverConnectClient.socket.getOutputStream());oos4.writeObject(message);}break;                        

4.2、效果展示
在这里插入图片描述
在这里插入图片描述
300上线后成功接收
在这里插入图片描述

http://www.yayakq.cn/news/420332/

相关文章:

  • 网站的关键词网站建设和执纪监督
  • 网站初期seo怎么做网站建设公司如何选取
  • 微信公众号可以做微网站郑州seo优化外包公司
  • net网站开发学习石家庄做外贸的网站
  • 北京哪里有教怎么做网站的郑州网站优化的微博_腾讯微博
  • 创建网站时可使用的数据库有株洲在线网站的目标客户
  • 一个网站需要多长时间网站开发职业岗位
  • 高清摄影作品网站网页设计的培训机构
  • 百度网站html验证asp手机网站
  • 建设企业网站中国建设银行电子商务网站开发系统
  • 大灰狼网站更新升级通知公司网站推广方法
  • 怎么制作视频教程济南网站建设和优化
  • 网上做石材去哪个网站wordpress 动态筛选
  • 最好的品牌设计网站建设百度指数人群画像怎么看
  • 外贸网站经典营销案例腾龙官方网站做号软件
  • 网站top排行榜免费家装设计网
  • 宝塔里面一个服务器做多个网站j建设网站需要的工具
  • 织梦网站栏目无法生成网站建设适合女生吗
  • 漯河有没有做网站的优化方案2021版语文答案
  • 网站建设合同 域名晋城建设局官方网站
  • 如何起手做网站项目建设商城类的网站要多少钱
  • 公司网站用wordpress济宁创新网络运营有限公司
  • 网站推广外包公司重庆装修公司最新排名
  • 盐城建设网站拟一份饰品网站建设合同
  • 网上销售 网站建设广告制作与设计专业
  • 上海哪家公司做网站最好池州网站建设推广
  • 网站如何做监测链接.net做网站c#
  • 企业网站设计方式有哪些wordpress回顶部
  • 网站建设呼和浩特建网站不想用怎样撤销
  • 平凉网站建设平凉h5创建网站