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!‘);
}
时间: 2024-11-09 06:14:00

Spring 中使用 WebSocket 笔记的相关文章

Spring中Hibernate配置笔记

ApplicatonContext.xml中的配置: <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/global/ds" /> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <proper

[原创]java WEB学习笔记109:Spring学习---spring中事物管理

博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ------------------------------------------------------------------------------------------------------------------

Spring中AOP原理,使用笔记

AOP(面向切面编程):通过预编译和运行期动态代理的方式在不改变代码的情况下给程序动态的添加一些功能.利用AOP可以对应用程序的各个部分进行隔离,在Spring中AOP主要用来分离业务逻辑和系统级服务. 系统级服务指的是:事务处理,日志记录,性能统计,安全控制,异常处理等,因为这些功能分散在程序的各个模块中,又是通用的,所以可以将它从业务逻辑中分离出来. 连接点(joinpoint):在连接点可以拦截方法的执行,在连接点前后织入上述的这些系统级服务(织入的就是通知). 切入点(pointcut)

Spring学习笔记——Spring中lazy-init与abstract具体解释

Spring的懒载入的作用是为了避免无谓的性能开销,就是当真正须要数据的时候才去运行数据的载入操作.不只在Spring中.我们在实际的编码过程中也应该借鉴这种思想,来提高我们程序的效率. 首先我们看一段配置文件: <beans> <bean> <bean id="creditService" type="com.jader.service.CreditServiceImpl" lazy-init="true"/>

Spring笔记2——Spring中Bean的装配

1.引言 Spring中,对象无需自己负责查找或创建与其关联的其他对象,而是由容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间的协作关系的行为通常称为装配(Wiring),这也是依赖注入的本质. 2.声明Bean 配置Bean的方式主要有两种:基于XML文件的配置方式和基于Java注解的配置方式.传统的基于XML文件的配置方式在声明Bean时,Spring配置文件的根元素来源于Spring beans命名空间所定义的<beans>元素.除了beans命名空间外,Java自带了多种

Spring学习笔记——Spring中lazy-init与abstract详解

Spring的懒加载的作用是为了避免无谓的性能开销,就是当真正需要数据的时候才去执行数据的加载操作.不仅仅在Spring中,我们在实际的编码过程中也应该借鉴这种思想,来提高我们程序的效率. 首先我们看一段配置文件: <beans> <bean> <bean id="creditService" type="com.jader.service.CreditServiceImpl" lazy-init="true"/&g

Spring学习笔记(十七)----Spring中的事务

事务就是一组数据库操作,但这组操作是具有原子性的(atomic).所谓原子操作,即这组数据库操作要么就都执行成功,要么就一个也没执行.当有一些操作成功了("成功"指数据库里的数据已更新或提交),但中间出现异常,后边的也就无法执行时,事务要回滚,即恢复到什么也没执行以前的状态. 举个比较常见的例子,一位顾客要进行银行转帐,把100元从A帐户转到B帐户,一般的过程是把A帐户的总额减去100,B帐户的总额加上100(只考虑最简单情况).当在A帐户总额减去100后出现异常情况,使得无法再对B帐

Spring学习笔记——Spring中的BeanFactory与FactoryBean

BeanFactory BeanFactory是Spring的org.springframework.beans.factory下的一个接口,是Spring IOC所遵守的基本编程规范,他的实现类有DefaultListableBeanFactory.XmlBeanFactory.ApplicationContext等,都各自实现自己的功能. FactoryBean 通常Spring通过反射机制利用bean的class属性来指定实现类的实例化Bean,在某些情况下实例化Bean的过程比较复杂,如

Velocity初探小结--Velocity在spring中的配置和使用

最近正在做的项目前端使用了Velocity进行View层的数据渲染,之前没有接触过,草草过了一遍,就上手开始写,现在又回头细致的看了一遍,做个笔记. velocity是一种基于java的模板引擎技术,有点类似与JSP,它允许页面设计者引用Java中定义的方法.前端页面设计者和后端Java开发者能够同时使用MVC的模式开发网站,这样前端能够把精力放在页面的设计上,后端也可以把精力放在代码开发上.Velocity把Java代码从Web页面中分离, 使网站可维护性更强. 注:项目使用的是Spring+