Java Primer——WebSocket 消息推送

原创 2016年06月01日 10:35:42

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/51554118

WebSocket 是客户端与服务端的一个通信,

1.客户端开发(JavaScript)

这里使用的 WebSocket 是 HTML5 原生的 WebSocket:

<script>
    var websocket = null;
    if('WebSocket' in window) {
        websocket = new WebSocket('ws://www.example.com/webSocket');
    } else {
        alert('该浏览器不支持WebSocket!');
    }

    websocket.onopen = function (event) {
        console.log('建立连接');
    }

    websocket.onclose = function (event) {
        console.log('连接关闭');
    }

    websocket.onmessage = function (event) {
        console.log('收到消息:' + event.data)
        //弹窗提醒, 播放音乐
        $('#myModal').modal('show');
        document.getElementById('notice').play();
    }

    websocket.onerror = function () {
        alert('WebSocket通信发生错误!');
    }

    window.onbeforeunload = function () {
        websocket.close();
    }
</script>

2.服务端开发(Java)

Spring Boot 使用 WebSocket 需要添加起步依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

添加 WebSocket 的配置文件:

@Configuration
public class WebSocketConfig {
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}

编写 WebSocket 代码:

@Component
@ServerEndpoint("/webSocket")
public class WebSocket {

    private Logger logger = LoggerFactory.getLogger(getClass());
    private Session session;
    private static CopyOnWriteArraySet<WebSocket> webSocketSet = new CopyOnWriteArraySet<>();

    @OnOpen
    public void onOpen(Session session) {
        this.session = session;
        webSocketSet.add(this);
        logger.info("[WebSocket消息] 有新的连接, 总数:{}", webSocketSet.size());
    }

    @OnClose
    public void onClose() {
        webSocketSet.remove(this);
        logger.info("[WebSocket消息] 连接断开, 总数:{}", webSocketSet.size());
    }

    @OnMessage
    public void onMessage(String message) {
        logger.info("[WebSocket消息] 收到客户端发来的消息:{}", message);
    }

    public void sendMessage(String message) {
        for (WebSocket webSocket: webSocketSet) {
            logger.info("[WebSocket消息] 广播消息, message={}", message);
            try {
                webSocket.session.getBasicRemote().sendText(message);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

这样,在服务端调用 sendMessage 就能给客户端发送消息了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

SpringMVC整合websocket实现消息推送及触发

1.创建websocket握手协议的后台 (1)HandShake的实现类 /** *Project Name: price *File Name: HandShake.java *Pac...
  • liuyunshengsir
  • liuyunshengsir
  • 2016年09月10日 17:20
  • 13444

websocket+redis实现即时消息推送思路

消息实时推送场景: 1,第一阶段可以实现消息群发功能 场景:根据应用类型,服务端发送消息,客户端及时收取消息。如同qq有时会弹出新闻小窗 2,第二阶段可以根据办理业务,单点推送 场景:手机用户...
  • asartear
  • asartear
  • 2015年01月12日 09:01
  • 6310

使用Websocket实现消息推送(上)

WebSocket一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并被RFC7936所补充规范,WebSocketAPI被W3...
  • ttdevs
  • ttdevs
  • 2016年08月26日 23:13
  • 21008

HTML5 WebSocket与消息推送

目录一、Socket简介 二、WebSocket简介与消息推送 三、WebSocket客户端 四、WebSocket服务器端 五、测试运行 六、小结与消息推送框架6.1、开源Java消息推送框架 Pu...
  • zmken497300
  • zmken497300
  • 2017年07月05日 19:24
  • 669

Spring+Websocket实现消息的推送

Websocet服务端实现 WebSocketConfig.java ? 1 2 3 4 5 6 7 8 ...
  • npf_java
  • npf_java
  • 2015年10月13日 09:25
  • 2796

java WebSocket 简易聊天消息推送

环境:
  • hzw2312
  • hzw2312
  • 2014年11月18日 20:02
  • 45990

JAVA前后端实现WebSocket消息推送(针对性推送)

JAVA前后端实现WebSocket消息推送(针对性推送) 1、需要添加依赖包,在pom.xml文件中添加 javax javaee-api 7.0 provi...
  • qq_31151929
  • qq_31151929
  • 2018年01月16日 11:23
  • 145

使用Websocket实现消息推送(下)

上一篇使用 Java-WebSocket 写了一套 WebSocket 的Demo,这一篇着重分析下WebSocket 的一些实现细节,更加详细的协议细节可参考 RFC6455。...
  • ttdevs
  • ttdevs
  • 2016年09月11日 20:53
  • 3218

websocket在web消息推送中的应用

利用websocket和java完成的消息推送功能,服务器用的是tomcat7.0,一些东西是自己琢磨的,也不知道恰不恰当,不恰当处,还请各位见谅,并指出。 程序简单来说,就是客户A可以发送消息给客...
  • huangxin0102
  • huangxin0102
  • 2015年11月13日 23:11
  • 5002

websocket消息推送实现(附代码)

转自解放号社区:http://bbs.jointforce.com/topic/25545 一.服务层 package com.demo.websocket; ...
  • sinat_36947685
  • sinat_36947685
  • 2017年02月14日 15:14
  • 765
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Primer——WebSocket 消息推送
举报原因:
原因补充:

(最多只允许输入30个字)