WebSocket学习日记一(STOMP,Spring Boot)

1、STOMP协议学习过程

(1)、什么是stomp?主要用来做什么?


(2)unbuntu RabbitMQ 安装 

[E]代表插件完整,可以运行
[e ] 代表需要依赖别的插件运行
注:^@代表 提交,按 Ctrl+@;Linux的shell中\下一行接着上一行;61613是stomp的默认端口;空行也是必须的

订阅者:
nc localhost 61613
CONNECT

^@
.......(这里是打印出服务的信息)

SUBSCRIBE
destination:/queue/test
发布者
nc localhost 61613
CONNECT

^@
.......(这里是打印出服务的信息)

SEND
destination:/queue/test

this is message!
^@

 

registry.enableSimpleBroker("/topic", "/user");这句话表示在topic和user这两个域上可以向客户端发消息。



registry.setUserDestinationPrefix("/user");这句话表示给指定用户发送一对一的主题前缀是"/user"。


registry.setApplicationDestinationPrefixes("/app");这句话表示客户单向服务器端发送时的主题上面需要加"/app"作为前缀。

就比如要向这个主题java: @MessageMapping("/hello")  发送新消息,就要 js: stompClient.send("/app/hello"......);加上前缀


stompEndpointRegistry.addEndpoint("/websocket").setAllowedOrigins("*").withSokJS();这个和客户端创建连接时的url有关,其中setAllowedOrigins()方法表示允许连接的域名,withSockJS()方法表示支持以SockJS方式连接服务器。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以帮你编写一个基于 Spring BootWebSocket 客户端。首先,你需要创建一个 Spring Boot 项目,并添加相关的依赖。在 pom.xml 文件中添加以下依赖: ```xml <dependencies> <!-- Spring Boot WebSocket --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> </dependencies> ``` 接下来,创建一个 WebSocket 客户端类,示例如下: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.messaging.converter.MappingJackson2MessageConverter; import org.springframework.messaging.converter.StringMessageConverter; import org.springframework.messaging.simp.stomp.*; import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler; import org.springframework.stereotype.Component; import java.util.Scanner; @SpringBootApplication public class WebsocketClientApplication { public static void main(String[] args) { SpringApplication.run(WebsocketClientApplication.class, args); } @Component public static class WebSocketClient implements CommandLineRunner { private final StompSessionHandler sessionHandler; @Autowired public WebSocketClient(StompSessionHandler sessionHandler) { this.sessionHandler = sessionHandler; } @Override public void run(String... args) throws Exception { StompClient stompClient = new WebSocketStompClient(new SockJsClient(createTransportClient())); stompClient.setMessageConverter(new StringMessageConverter()); StompSession stompSession = stompClient.connect("ws://localhost:8080/ws-endpoint", sessionHandler).get(); System.out.println("Connected to WebSocket server."); Scanner scanner = new Scanner(System.in); while (true) { String message = scanner.nextLine(); stompSession.send("/app/send-message", message.getBytes()); } } private WebSocketTransport createTransportClient() { return new WebSocketTransport(new StandardWebSocketClient()); } } @Component public static class CustomStompSessionHandler extends StompSessionHandlerAdapter { @Override public void afterConnected(StompSession session, StompHeaders connectedHeaders) { System.out.println("WebSocket session established."); } @Override public void handleTransportError(StompSession session, Throwable exception) { System.err.println("WebSocket transport error: " + exception.getMessage()); } @Override public Type getPayloadType(StompHeaders headers) { return String.class; } @Override public void handleFrame(StompHeaders headers, Object payload) { System.out.println("Received message: " + payload); } } } ``` 这个示例中,我们创建了一个 CommandLineRunner 类型的 WebSocketClient,用于建立 WebSocket 连接并发送/接收消息。在 WebSocketClient 类的 run 方法中,我们使用 `StompClient` 连接到 WebSocket 服务器,并创建一个 `StompSession` 对象,用于发送消息。同时,我们还创建了一个 `Scanner` 对象,用于从控制台读取用户输入的消息,并通过 `stompSession.send` 方法发送给服务器。 在 CustomStompSessionHandler 类中,我们继承了 `StompSessionHandlerAdapter` 类,并重写了一些方法来处理连接建立、传输错误和收到消息等事件。 请确保在 `stompClient.connect` 方法的参数中,将 `ws://localhost:8080/ws-endpoint` 替换为实际的 WebSocket 服务器端点地址。 这只是一个简单的示例,你可以根据自己的需求进行扩展和修改。希望对你有所帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值