spring-mvc - 使用Java代码以编程方式推送消息的websocket
问题描述
java 8 Spring 5 mvc Websocket 处理程序。
它如何以编程方式(使用 javacode)将 websocket 消息推送到客户端?
我遵循以下示例。
http://boraji.com/spring-mvc-5-handling-websocket-message-example
这会创建TextWebsocketHandler
.
@Component
public class MyWebSocketHandler extends TextWebSocketHandler {
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message)
throws Exception {
String clientMessage = message.getPayload();
if (clientMessage.startsWith("Hello") || clientMessage.startsWith("Hi")) {
session.sendMessage(new TextMessage("Hello! What can i do for you?"));
} else {
session.sendMessage(
new TextMessage("This is a simple hello world example of using Spring WebSocket."));
}
}
}
然后将其传递给 websocket configurere
@Configuration
@EnableWebSocket
@ComponentScan("com.boraji.tutorial.spring.websocket")
public class WebSocketConfig implements WebSocketConfigurer {
@Autowired
private MyWebSocketHandler myWebSocketHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myWebSocketHandler, "/socketHandler");
}
}
解决方案
只需将您WebSocketSession
的代码保存在某个位置,然后sendMessage(TextMessage m)
在您想将某些内容发送回客户端时调用它。
例如,您可以OnOpen
在处理程序中调用方法时保存 WebSocketSession 引用。引用作为参数传递。
但无论如何,您的代码只是在执行以下操作:
session.sendMessage(
new TextMessage("This is a simple hello world example of using Spring WebSocket."));
并且在
session.sendMessage(new TextMessage("Hello! What can i do for you?"));
你说的程序化是什么意思?例如,您可以为自己创建一个协议以及如何处理消息。
推荐阅读
- vb.net - 如何验证每个人都拥有共享文件夹 VB.net 的权限
- android - Android Java停止服务由最后一个活动启动
- exception - mondrian 层次结构错误:在当前实现中,父/子层次结构必须只有一层
- c - 在 C 中显示 Eratosthenes 代码筛选结果的问题
- hibernate - 用于 RCP 应用程序的 Hibernate ORM p2 站点
- python - TypeError:使用刮刀在 0 维数组上迭代?
- reactjs - 当我在 package.json 中设置 HTTPS=true 时出现错误
- tensorflow - OpenCV keras 模型引发错误“__init__() 得到了一个意外的关键字参数‘ragged’”
- python - 如何通过vpn和使用ssl在python(没有vpc)中使用aws lambda访问外部mysql数据库
- haskell - 使用组合函子的应用实例