{"id":15350,"date":"2024-03-15T11:01:11","date_gmt":"2024-03-15T11:01:11","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/"},"modified":"2025-08-06T17:51:52","modified_gmt":"2025-08-06T17:51:52","slug":"how-can-springboot-achieve-point-to-point-messaging","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/","title":{"rendered":"How can SpringBoot achieve point-to-point messaging?"},"content":{"rendered":"<p>In Spring Boot, you can use WebSocket to send messages between two points. WebSocket is a protocol that allows full-duplex communication over a single TCP connection, enabling a persistent connection between a web browser and server for the server to push data actively to the client.<\/p>\n<p>Here are the steps to implement point-to-point messaging using Spring Boot:<\/p>\n<ol>\n<li>pom.xml file<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>org.springframework.boot<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>spring-boot-starter-websocket<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<ol>\n<li>Create a WebSocket configuration class: establish a configuration class to set up WebSocket related information. An example code is shown below:<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-meta\">@Configuration<\/span>\r\n<span class=\"hljs-meta\">@EnableWebSocket<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">WebSocketConfig<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title class_\">WebSocketConfigurer<\/span> {\r\n\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">registerWebSocketHandlers<\/span><span class=\"hljs-params\">(WebSocketHandlerRegistry registry)<\/span> {\r\n        registry.addHandler(<span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">WebSocketHandler<\/span>(), <span class=\"hljs-string\">\"\/ws\"<\/span>).setAllowedOrigins(<span class=\"hljs-string\">\"*\"<\/span>);\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the example code above, WebSocketHandler() is a custom WebSocket handler, and \/ws is the endpoint path for WebSocket.<\/p>\n<ol>\n<li>Create a WebSocket handler: Create a custom WebSocket handler to handle the establishment, closure, and sending of messages for WebSocket connections. Example code is provided below:<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">WebSocketHandler<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title class_\">TextWebSocketHandler<\/span> {\r\n\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">final<\/span> List&lt;WebSocketSession&gt; sessions = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">CopyOnWriteArrayList<\/span>&lt;&gt;();\r\n\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">afterConnectionEstablished<\/span><span class=\"hljs-params\">(WebSocketSession session)<\/span> <span class=\"hljs-keyword\">throws<\/span> Exception {\r\n        sessions.add(session);\r\n    }\r\n\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">handleTextMessage<\/span><span class=\"hljs-params\">(WebSocketSession session, TextMessage message)<\/span> <span class=\"hljs-keyword\">throws<\/span> Exception {\r\n        <span class=\"hljs-comment\">\/\/ \u5904\u7406\u6536\u5230\u7684\u6d88\u606f<\/span>\r\n        <span class=\"hljs-keyword\">for<\/span> (WebSocketSession s : sessions) {\r\n            s.sendMessage(message);\r\n        }\r\n    }\r\n\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">afterConnectionClosed<\/span><span class=\"hljs-params\">(WebSocketSession session, CloseStatus status)<\/span> <span class=\"hljs-keyword\">throws<\/span> Exception {\r\n        sessions.remove(session);\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the sample code above, the afterConnectionEstablished() method is called when the WebSocket connection is established, the handleTextMessage() method is used to handle received text messages, and the afterConnectionClosed() method is called when the WebSocket connection is closed.<\/p>\n<ol>\n<li>Create a Controller class: Generate a Controller class to manage WebSocket-related requests. Sample code is provided below:<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-meta\">@RestController<\/span>\r\n<span class=\"hljs-meta\">@RequestMapping(\"\/api\")<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">MessageController<\/span> {\r\n\r\n    <span class=\"hljs-meta\">@Autowired<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> SimpMessagingTemplate messagingTemplate;\r\n\r\n    <span class=\"hljs-meta\">@PostMapping(\"\/send\/{userId}\")<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">sendMessage<\/span><span class=\"hljs-params\">(<span class=\"hljs-meta\">@PathVariable(\"userId\")<\/span> String userId, <span class=\"hljs-meta\">@RequestBody<\/span> String message)<\/span> {\r\n        messagingTemplate.convertAndSendToUser(userId, <span class=\"hljs-string\">\"\/ws\"<\/span>, message);\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the example code above, the method sendMessage() is used to send messages to a specified WebSocket connection.<\/p>\n<p>With this, the implementation of sending messages point-to-point is complete. You can send a message by sending a POST request to \/api\/send\/{userId}, passing userId and message parameters.<\/p>\n<p>Please note that the above example only demonstrates the basic implementation of sending messages point-to-point. In actual applications, you may need to further develop and optimize based on specific requirements.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Spring Boot, you can use WebSocket to send messages between two points. WebSocket is a protocol that allows full-duplex communication over a single TCP connection, enabling a persistent connection between a web browser and server for the server to push data actively to the client. Here are the steps to implement point-to-point messaging using [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[453,1402,299,1404,1403],"class_list":["post-15350","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-development","tag-guide","tag-programming","tag-technology","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How can SpringBoot achieve point-to-point messaging? - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn about how can springboot achieve point-to-point messaging?. Comprehensive guide with examples and best practices.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How can SpringBoot achieve point-to-point messaging?\" \/>\n<meta property=\"og:description\" content=\"Learn about how can springboot achieve point-to-point messaging?. Comprehensive guide with examples and best practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T11:01:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-06T17:51:52+00:00\" \/>\n<meta name=\"author\" content=\"Sophia Anderson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sophia Anderson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/\"},\"author\":{\"name\":\"Sophia Anderson\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/19a24313de9c988db3d69226b4a40a30\"},\"headline\":\"How can SpringBoot achieve point-to-point messaging?\",\"datePublished\":\"2024-03-15T11:01:11+00:00\",\"dateModified\":\"2025-08-06T17:51:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/\"},\"wordCount\":264,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"Development\",\"guide\",\"programming\",\"technology\",\"tutorial\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/\",\"name\":\"How can SpringBoot achieve point-to-point messaging? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T11:01:11+00:00\",\"dateModified\":\"2025-08-06T17:51:52+00:00\",\"description\":\"Learn about how can springboot achieve point-to-point messaging?. Comprehensive guide with examples and best practices.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How can SpringBoot achieve point-to-point messaging?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/19a24313de9c988db3d69226b4a40a30\",\"name\":\"Sophia Anderson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c726c09aa40e37115fb5c62d0c3ed62c16ca255d3763e2e3ae83a70ddf8c2175?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c726c09aa40e37115fb5c62d0c3ed62c16ca255d3763e2e3ae83a70ddf8c2175?s=96&d=mm&r=g\",\"caption\":\"Sophia Anderson\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/sophiaanderson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How can SpringBoot achieve point-to-point messaging? - Blog - Silicon Cloud","description":"Learn about how can springboot achieve point-to-point messaging?. Comprehensive guide with examples and best practices.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/","og_locale":"en_US","og_type":"article","og_title":"How can SpringBoot achieve point-to-point messaging?","og_description":"Learn about how can springboot achieve point-to-point messaging?. Comprehensive guide with examples and best practices.","og_url":"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T11:01:11+00:00","article_modified_time":"2025-08-06T17:51:52+00:00","author":"Sophia Anderson","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Sophia Anderson","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/"},"author":{"name":"Sophia Anderson","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/19a24313de9c988db3d69226b4a40a30"},"headline":"How can SpringBoot achieve point-to-point messaging?","datePublished":"2024-03-15T11:01:11+00:00","dateModified":"2025-08-06T17:51:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/"},"wordCount":264,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["Development","guide","programming","technology","tutorial"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/","url":"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/","name":"How can SpringBoot achieve point-to-point messaging? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T11:01:11+00:00","dateModified":"2025-08-06T17:51:52+00:00","description":"Learn about how can springboot achieve point-to-point messaging?. Comprehensive guide with examples and best practices.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-can-springboot-achieve-point-to-point-messaging\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How can SpringBoot achieve point-to-point messaging?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/19a24313de9c988db3d69226b4a40a30","name":"Sophia Anderson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c726c09aa40e37115fb5c62d0c3ed62c16ca255d3763e2e3ae83a70ddf8c2175?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c726c09aa40e37115fb5c62d0c3ed62c16ca255d3763e2e3ae83a70ddf8c2175?s=96&d=mm&r=g","caption":"Sophia Anderson"},"url":"https:\/\/www.silicloud.com\/blog\/author\/sophiaanderson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/15350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=15350"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/15350\/revisions"}],"predecessor-version":[{"id":48816,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/15350\/revisions\/48816"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=15350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=15350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=15350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}