分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

netty-socketio消息推送

发布时间:2023-09-06 01:31责任编辑:蔡小小关键词:暂无标签

一,netty-socketio消息推送

  1)在项目中常常涉及到消息推送的情况,消息推送要求的实时性,使用传统的方式已经不能满足需求了

  2)使用netty-socketio做消息推送,实现步骤,加入jar包----->写启动,添加,通知,关闭工具类 -----> 设置依靠监听器启动 ----->页面引入js----->编写请求获取消息;

二,实现

  1)映入依赖于js文件

<!-- 消息推送 --> ???<dependency> ????????<groupId>com.corundumstudio.socketio</groupId> ????????<artifactId>netty-socketio</artifactId> ????????<version>1.7.7</version> ???</dependency>

  2)实现工具类

/* * netty-socketio工具类 * 启动、添加客户端 * 消息推送 * 关闭服务 */public class Socketio { ???????static SocketIOServer socketIOServer; ???/* ????* 添加客户端 ????*/ ???public void startSocketio() throws InterruptedException { ???????//配置 ???????Configuration conf = new Configuration(); ???????//指定要主机ip地址,这个和页面请求ip地址一致 ???????conf.setHostname("192.168.1.2"); ???????//指定端口号 ???????conf.setPort(9092); ???????//设置最大的WebSocket帧内容长度限制 ???????conf.setMaxFramePayloadLength(1024*1024); ???????//设置最大HTTP内容长度限制 ???????conf.setMaxHttpContentLength(1024 * 1024); ???????????????socketIOServer = new SocketIOServer(conf); ???????????????ConnectListener connect = new ConnectListener() { ???????????@Override ???????????public void onConnect(SocketIOClient client) { ???????????????System.out.println("添加"); ???????????} ???????}; ???????//添加客户端 ???????socketIOServer.addConnectListener(connect); ???????socketIOServer.start(); ???????????????//设置超时时间 ???????Thread.sleep(Integer.MAX_VALUE); ???????????????socketIOServer.stop(); ???} ???????/* ????* 全体消息推送 ????* @param type 前台根据类型接收消息,所以接收的消息类型不同,收到的通知就不同 ????* 推送的事件类型 ????* @param content ????* 推送的内容 ????*/ ???public void pushArr(String type,String content) { ???????//获取全部客户端 ???????Collection<SocketIOClient> allClients = socketIOServer.getAllClients(); ???????for (SocketIOClient socket : allClients) { ???????????socket.sendEvent(type, content); ???????} ???} ???????/* ????* 启动服务 ????*/ ???public void startServer() { ???????if (socketIOServer == null) { ???????????new Thread(new Runnable() { ???????????????@Override ???????????????public void run() { ??????????????????try { ???????????????????startSocketio(); ???????????????} catch (InterruptedException e) { ???????????????????e.printStackTrace(); ???????????????} ???????????????} ???????????}).start(); ???????} ???} ???????/* ????* 停止服务 ????*/ ???public void stopSocketio() { ???????if (socketIOServer != null) { ???????????socketIOServer.stop(); ???????????socketIOServer = null; ???????} ???} ???????}

  3)监听器启动

public class SocketioLisener implements ServletContextListener{ ???@Override ???public void contextInitialized(ServletContextEvent sce) { ???????//启动Socketio服务 ???????Socketio socketio = new Socketio(); ???????socketio.startServer(); ???} ???????@Override ???public void contextDestroyed(ServletContextEvent sce) { ???????//关闭Socketio服务 ???????Socketio socketio = new Socketio(); ???????socketio.stopSocketio(); ???}}

  3.1)xml配置

 ????<listener> ?????????<listener-class>lisener.SocketioLisener</listener-class> ????</listener>

三,页面

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>消息推送</title></head><body> ???</body><script type="text/javascript" src="js/socket.io.js"></script><script type="text/javascript" src="jquery-easyui-1.5.3/jquery.min.js"></script><script type="text/javascript"><!-- 实时从指定查看是否有消息 -->var socket = io.connect(‘192.168.1.2:9092‘);socket.on(‘connect_msg‘,function(data){ ???alert(data); ???var personInfo = JSON.parse(data); ???console.log(personInfo);});</script></html>

四,消息发布

@Controllerpublic class NettyController { ???@RequestMapping("pushArr") ???public void getsoc() { ???????System.out.println("给全部人员发送消息"); ???????Socketio socketio = new Socketio(); ???????socketio.pushArr("connect_msg", "今天下午2点开会"); ???}}

五,效果

netty-socketio消息推送

原文地址:http://www.cnblogs.com/hi-feng/p/8052724.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved