spring boot web socket——迹忆客-ag捕鱼王app官网

在本章中,让我们了解如何使用带有 web socket 套接字的 spring boot 构建交互式 web 应用程序。

要使用 web 套接字在 spring boot 中构建交互式 web 应用程序,您需要添加以下依赖项。

maven 用户应在 pom.xml 文件中添加以下依赖项。


   org.springframework.boot
   spring-boot-starter-websocket


   org.webjars
   webjars-locator


   org.webjars
   sockjs-client
   1.0.2


   org.webjars
   stomp-websocket
   2.3.3


   org.webjars
   bootstrap
   3.3.7        

   org.webjars
   jquery
   3.1.0

gradle 用户可以在 build.gradle 文件中添加以下依赖项

compile("org.springframework.boot:spring-boot-starter-websocket")
compile("org.webjars:webjars-locator")
compile("org.webjars:sockjs-client:1.0.2")
compile("org.webjars:stomp-websocket:2.3.3")
compile("org.webjars:bootstrap:3.3.7")
compile("org.webjars:jquery:3.1.0")

让我们创建一个消息处理控制器来处理 stomp 消息传递。 stomp 消息可以路由到 @controller 类文件。 例如,greetingcontroller 被映射为处理发送到目标“/hello”的消息。

package com.jiyik.websocketapp;
import org.springframework.messaging.handler.annotation.messagemapping;
import org.springframework.messaging.handler.annotation.sendto;
import org.springframework.stereotype.controller;
@controller
public class greetingcontroller {
    @messagemapping("/hello")
    @sendto("/topic/greetings")
    public greeting greeting(hellomessage message) throws exception {
        thread.sleep(1000); // simulated delay
        return new greeting("hello, "   message.getname()   "!");
    }
}

现在,为 stomp 消息配置 spring。 编写一个继承 abstractwebsocketmessagebrokerconfigurer 类的 websocketconfig 类文件,如下所示。

package com.jiyik.websocketapp;
import org.springframework.web.socket.config.annotation.abstractwebsocketmessagebrokerconfigurer;
import org.springframework.messaging.simp.config.messagebrokerregistry;
import org.springframework.web.socket.config.annotation.stompendpointregistry;
public class websocketconfig extends abstractwebsocketmessagebrokerconfigurer {
    @override
    public void configuremessagebroker(messagebrokerregistry config) {
        config.enablesimplebroker("/topic");
        config.setapplicationdestinationprefixes("/app");
    }
    @override
    public void registerstompendpoints(stompendpointregistry registry) {
        registry.addendpoint("/jiyik-websocket").withsockjs();
    }
}

@enablewebsocketmessagebroker 注解用于配置 web 套接字消息代理以创建 stomp 端点。

我们可以在 src/main/resources/static/ 下创建一个浏览器客户端文件 index.html,如下所示


    hello websocket
    
    
    
    
    
    

greetings

让我们创建一个 app.js 文件来使用 stomp 来消费和生成消息。

var stompclient = null;
function setconnected(connected) {
   $("#connect").prop("disabled", connected);
   $("#disconnect").prop("disabled", !connected);
   
   if (connected) {
      $("#conversation").show();
   } else {
      $("#conversation").hide();
   }
   $("#greetings").html("");
}
function connect() {
   var socket = new sockjs('/tutorialspoint-websocket');
   stompclient = stomp.over(socket);
   stompclient.connect({}, function (frame) {
      setconnected(true);
      console.log('connected: '   frame);
      stompclient.subscribe('/topic/greetings', function (greeting) {
         showgreeting(json.parse(greeting.body).content);
      });
   });
}
function disconnect() {
   if (stompclient !== null) {
      stompclient.disconnect();
   }
   setconnected(false);
   console.log("disconnected");
}
function sendname() {
   stompclient.send("/app/hello", {}, json.stringify({'name': $("#name").val()}));
}
function showgreeting(message) {
   $("#greetings").append(""   message   "");
}
$(function () {
   $( "form" ).on('submit', function (e) {e.preventdefault();});
   $( "#connect" ).click(function() { connect(); });
   $( "#disconnect" ).click(function() { disconnect(); });
   $( "#send" ).click(function() { sendname(); });
});

主 spring boot 应用程序的代码如下所示。

package com.jiyik.websocketapp;
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
@springbootapplication
public class websocketappapplication {
    public static void main(string[] args) {
        springapplication.run(websocketappapplication.class, args);
    }
}

查看笔记

扫码一下
查看教程更方便
网站地图