{"id":1632,"date":"2016-10-04T18:27:26","date_gmt":"2016-10-04T16:27:26","guid":{"rendered":"http:\/\/blog.rabahi.net\/?page_id=1632"},"modified":"2016-10-05T15:36:44","modified_gmt":"2016-10-05T13:36:44","slug":"java-spring-websocket","status":"publish","type":"page","link":"https:\/\/blog.rabahi.net\/?page_id=1632","title":{"rendered":"Java Spring &#8211; WebSocket"},"content":{"rendered":"<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Contents<\/p><ul class=\"toc_list\"><li><a href=\"#Prerequistes\"><span class=\"toc_number toc_depth_1\">1<\/span> Prerequistes<\/a><\/li><li><a href=\"#Server_Side_Java\"><span class=\"toc_number toc_depth_1\">2<\/span> Server Side (Java)<\/a><ul><li><a href=\"#WebSocketConfigjava\"><span class=\"toc_number toc_depth_2\">2.1<\/span> WebSocketConfig.java<\/a><\/li><li><a href=\"#WebSocketController\"><span class=\"toc_number toc_depth_2\">2.2<\/span> WebSocketController<\/a><\/li><\/ul><\/li><li><a href=\"#Client_Side_Javascript\"><span class=\"toc_number toc_depth_1\">3<\/span> Client Side (Javascript)<\/a><ul><li><a href=\"#Import_libraries\"><span class=\"toc_number toc_depth_2\">3.1<\/span> Import libraries<\/a><\/li><li><a href=\"#Connect\"><span class=\"toc_number toc_depth_2\">3.2<\/span> Connect<\/a><\/li><li><a href=\"#Send_message\"><span class=\"toc_number toc_depth_2\">3.3<\/span> Send message<\/a><\/li><li><a href=\"#Disconnect\"><span class=\"toc_number toc_depth_2\">3.4<\/span> Disconnect<\/a><\/li><\/ul><\/li><\/ul><\/div>\n<h1><span id=\"Prerequistes\">Prerequistes<\/span><\/h1>\n<p>Please read : <a href=\"?page_id=1549\">Java spring &#8211; quickstart<\/a><\/p>\n<h1><span id=\"Server_Side_Java\">Server Side (Java)<\/span><\/h1>\n<h2><span id=\"WebSocketConfigjava\">WebSocketConfig.java<\/span><\/h2>\n<pre lang=\"java\">\r\n@Configuration\r\n@EnableWebSocketMessageBroker\r\npublic class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {\r\n\t\/* (non-Javadoc)\r\n\t * @see org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer#configureMessageBroker(org.springframework.messaging.simp.config.MessageBrokerRegistry)\r\n\t *\/\r\n\t@Override\r\n\tpublic void configureMessageBroker(MessageBrokerRegistry config) {\r\n\t\t\/\/ server will listen socket message in '\/socket':\r\n\t\tconfig.setApplicationDestinationPrefixes(\"\/socket\");\r\n\t\t\r\n\t\t\/\/ and send back response to '\/broker':\r\n\t\tconfig.enableSimpleBroker(\"\/broker\");\r\n\t\t\r\n\t}\r\n\t\/* (non-Javadoc)\r\n\t * @see org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer#registerStompEndpoints(org.springframework.web.socket.config.annotation.StompEndpointRegistry)\r\n\t *\/\r\n\t@Override\r\n\tpublic void registerStompEndpoints(StompEndpointRegistry registry) {\r\n\t\t\/\/ when user want to connect with sockJS : var socket = new SockJS('\/connect'); \/\/NOSONAR\r\n\t\tregistry.addEndpoint(\"\/connect\").withSockJS();\r\n\t}\r\n} \r\n<\/pre>\n<h2><span id=\"WebSocketController\">WebSocketController<\/span><\/h2>\n<pre lang=\"java\">\r\n@Controller\r\npublic class WebSocketController {\r\n    @MessageMapping(\"\/sayHello\" )\r\n    @SendTo(\"\/broker\/hello\")\r\n    public String sayHello(String name) {\r\n        return \"Hello \"+name;\r\n    }    \r\n} \r\n<\/pre>\n<h1><span id=\"Client_Side_Javascript\">Client Side (Javascript)<\/span><\/h1>\n<h2><span id=\"Import_libraries\">Import libraries<\/span><\/h2>\n<pre lang=\"html\">\r\n<script src=\"webjars\/<wj:locate path=\"sockjs.min.js\" \/>\"><\/script>\r\n<script src=\"webjars\/<wj:locate path=\"stomp.min.js\" \/>\"><\/script>\r\n<\/pre>\n<h2><span id=\"Connect\">Connect<\/span><\/h2>\n<pre lang=\"javascript\">\r\nvar socket = new SockJS('\/connect');\r\nstompClient = Stomp.over(socket);\r\n\r\nstompClient.connect({}, function(frame) {\r\n  console.log('Connected: ' + frame);\r\n  stompClient.subscribe('\/broker\/hello', function(message){\r\n                \tconsole.log(message);\r\n  });\r\n});\r\n<\/pre>\n<h2><span id=\"Send_message\">Send message<\/span><\/h2>\n<pre lang=\"javascript\">\r\nstompClient.send(\"\/socket\/sayHello\", {}, \"John Doe\");\r\n<\/pre>\n<h2><span id=\"Disconnect\">Disconnect<\/span><\/h2>\n<pre lang=\"javascript\">\r\nstompClient.disconnect();\r\nconsole.log(\"Disconnected\");\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Contents1 Prerequistes2 Server Side (Java)2.1 WebSocketConfig.java2.2 WebSocketController3 Client Side (Javascript)3.1 Import libraries3.2 Connect3.3 Send message3.4 Disconnect Prerequistes Please read : Java spring &#8211; quickstart Server Side (Java) WebSocketConfig.java @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { \/* (non-Javadoc) * @see org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer#configureMessageBroker(org.springframework.messaging.simp.config.MessageBrokerRegistry) *\/ @Override public void configureMessageBroker(MessageBrokerRegistry config) { \/\/ server will listen socket message in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1547,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1632","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1632"}],"version-history":[{"count":6,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1632\/revisions"}],"predecessor-version":[{"id":1641,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1632\/revisions\/1641"}],"up":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1547"}],"wp:attachment":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}