JSR-356 WebSocket @ServerEndpoint注入spring IOC容器
WebSocket目前主要由两种实现方案java API for WebSocket(JSR-356)spring WebSocket API这里主要说下java api方式。Java API for WebSocket已经是Java EE 7的一部分。它定义了两类endpoit(都是EndPoint类的子类),使用注解标识@ClientEndpoint和@ServerEndpoint。...
·
WebSocket目前主要由两种实现方案
- java API for WebSocket(JSR-356)
- spring WebSocket API
这里主要说下java api方式。Java API for WebSocket已经是Java EE 7的一部分。它定义了两类endpoit(都是EndPoint类的子类),使用注解标识@ClientEndpoint和@ServerEndpoint。
@ServerEndpoint WebSocket该服务器由servlet容器本身实例化,而不是在Spring上下文中实例化。因此我们在springmvc中通过这种方式集成时,无法再bean中直接注入。可以通过如下方式使用spring容器来管理WebSocket:
1、@ServerEndpoint中添加configure选项,同时添加@component注解
@ServerEndpoint(value = "/upgradeWebSocketServer", configurator = SpringConfigurator.class)
@Component
public class UpgradeWebSocket {
private Session session;
@OnOpen
public void onOpen(Session session) {
this.session = session;
}
@OnClose
public void onClose() {
try {
session.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@OnMessage
public void onMessage(String message, Session session) {
}
@OnError
public void onError(Session session, Throwable error) {
error.printStackTrace();
}
//发送消息到客户端
public synchronized void sendMessage(String message) {
try {
this.session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
2、在application.xml中添加扫描当前类
<context:component-scan base-package="com.websocket"/>
3、最后就可以在service中通过@Autowired注入。
@Autowired
private UpgradeWebSocket upgradeWebSocket;
可以参考下spring官网给的例子
更多推荐
已为社区贡献1条内容
所有评论(0)