WebScoket scope类型

每个 WebSocket 会话都有一个属性map。该map作为标头附加到入站客户端消息,并且可以从控制器方法访问它,如以下示例所示:

@Controller
public class MyController {

	@MessageMapping("/action")
	public void handle(SimpMessageHeaderAccessor headerAccessor) {
		Map<String, Object> attrs = headerAccessor.getSessionAttributes();
		*// ...*
	}
}

你可以在websocket作用域中声明一个Spring管理的bean。你可以将WebSocket作用域的beans注入到控制器和注册在clientInboundChannel上的任何通道拦截器中。这些通常是单例的,并且比任何个别的WebSocket会话的生命周期都长。因此,你需要为WebSocket作用域的beans使用作用域代理模式,如下例所示:

@Component
@Scope(scopeName = "websocket", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyBean {

	@PostConstruct
	public void init() {
		*// Invoked after dependencies injected*
	}

	*// ...*@PreDestroy
	public void destroy() {
		*// Invoked when the WebSocket session ends*
	}
}

@Controller
public class MyController {

	private final MyBean myBean;

	@Autowired
	public MyController(MyBean myBean) {
		this.myBean = myBean;
	}

	@MessageMapping("/action")
	public void handle() {
		*// this.myBean from the current WebSocket session*
	}
}

与任何自定义作用域一样,Spring在第一次从控制器访问时初始化一个新的MyBean实例,并将该实例存储在WebSocket会话属性中。随后返回相同的实例,直到会话结束。WebSocket 作用域的 bean 调用了所有 Spring 生命周期方法,如前面的示例所示。

相关推荐

  1. MIME 类型

    2024-06-09 20:54:05       30 阅读
  2. 19 # 高级类型:索引类型

    2024-06-09 20:54:05       37 阅读
  3. 联合类型和交叉类型

    2024-06-09 20:54:05       31 阅读
  4. 数据库-列的类型-Enum类型和set类型

    2024-06-09 20:54:05       47 阅读
  5. TS条件类型、断言及名义类型

    2024-06-09 20:54:05       59 阅读
  6. 数据库-列的类型-字符串char类型

    2024-06-09 20:54:05       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 20:54:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 20:54:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 20:54:05       87 阅读
  4. Python语言-面向对象

    2024-06-09 20:54:05       96 阅读

热门阅读

  1. 前端柯里化

    2024-06-09 20:54:05       26 阅读
  2. Apache Spark

    2024-06-09 20:54:05       25 阅读
  3. 关于AD9777芯片的说明以及FPGA控制实现 I

    2024-06-09 20:54:05       30 阅读
  4. 在C++中,NULL和nullptr有什么区别?

    2024-06-09 20:54:05       33 阅读
  5. Android基础-进程间通信

    2024-06-09 20:54:05       30 阅读
  6. Tomcat 启动闪退问题解决方法

    2024-06-09 20:54:05       37 阅读
  7. format前端转义

    2024-06-09 20:54:05       32 阅读
  8. 方差的计算(总体方差与样本方差)

    2024-06-09 20:54:05       34 阅读
  9. CKA-EXAM

    2024-06-09 20:54:05       26 阅读
  10. 浔川画板v2.0——浔川python社

    2024-06-09 20:54:05       26 阅读
  11. 55.ReentrantReadWriteLock应用于缓存

    2024-06-09 20:54:05       32 阅读
  12. Python - json 美化格式、保存文件

    2024-06-09 20:54:05       32 阅读