zoukankan      html  css  js  c++  java
  • Spring 中使用 WebSocket 笔记

    编写 WebSocket 消息处理类,比较简单的方式就是直接继承AbstractWebSocketHandler,并覆写其中的处理方法,下面为一个简单的 demo

    public class WebSocketHandler extends AbstractWebSocketHandler {
    ​
        @Override
        protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
            logger.info("Received message: " + message.getPayload());
            TimeUnit.SECONDS.sleep(2);
            session.sendMessage(new TextMessage("Polo!"));
        }
        
    }

    启用 WebSocket,并映射消息处理器

    @Configuration
    @EnableWebSocket
    public class WebSocketConfig implements WebSocketConfigurer{
    ​
        // 要映射的 WebSocket 消息处理器(类)
        @Bean
        public WebSocketHandler webSocketHandler() {
            return new WebSocketHandler();
        }
        
        // 映射消息处理器到对应的路径
        @Override
        public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
            registry.addHandler(webSocketHandler(), "/macro");
            
        }
    ​
    }

    之后即可在 javascript 端进行互相通信,demo 如下

    var url = 'ws://' + window.location.host + '/demo/macro';
    var sock = new WebSocket(url);
    sock.onopen = function() {
        console.log("Opening");
        sayMarco();
    }
            
    sock.onmessage = function(e) {
        console.log("Received messaage: " + e.data);
        setTimeout(function(){sayMarco()}, 2000);
    }
            
    sock.onclose = function() {
        console.log("Closing");
    }
            
    function sayMarco() {
        console.log('Sending Marco!');
        sock.send('Marco!');
    }
  • 相关阅读:
    AngularJS中$http服务的简单用法
    js变量作用域及访问权限的探讨(2)
    javascript中类的属性访问权限研究(1)
    zoom:1-hasLayout
    JS 继承(类式 与 原型式)
    迷你版jQuery——zepto核心源码分析
    移动互联网终端的touch事件,touchstart, touchend, touchmove
    WEBAPP开发技巧总结
    JQuery flot API文档 中文版
    jQuery插件Flot实战Demo
  • 原文地址:https://www.cnblogs.com/zawier/p/7368381.html
Copyright © 2011-2022 走看看