服务器端消息推送技术

当客户端向服务端发请求,服务端抓住请求不放,

  1. SSE(server send event)

    需要新式浏览器

每5秒向浏览器推送消息

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind. annotation.ResponseBody;
@Controller
public class SseController{

@RequestMapping (value=" /push",produces="text/event-stream")
public @ResponseBody String push() {
	Random r = new Random() ;
	try{
		Thread.sleep(5000);
	} catch (InterruptedException e){
		e.printStackTrace();
	}
	return "data:Testing 1,2,3" + r.nextInt() +"\n\n";
}

使用输出媒体类型:text/event-stream,这是服务端SSE的支持

  1. 基于servlet3.0的异步方法

    跨浏览器

    • DeferredResult:当一个请求到达API接口,如果该API接口的return返回值是DeferredResult,在没有超时或者DeferredResult对象设置setResult时,接口不会返回,但是Servlet容器线程会结束,DeferredResult另起线程来进行结果处理(即这种操作提升了服务短时间的吞吐能力)。前台页面打开时向后台发送请求–获取数据–一次请求完再向后台发送请求
    • @Async:在启动类或者配置类上使用@EnableAsync,在对应的service方法上使用@Async,使得方法异步
  2. 扩展 使用callable处理service中业务超时
    集成callable开始线程执行任务,使用Future指定时间获取返回值,返回异常表示任务未执行完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值