Springboot+WebSocket实现一对一聊天和公告的示例代码

确保您已经安装好了Java JDK、Maven以及一个文本编辑器,然后按照以下步骤:

1.创建Maven项目

打开命令行窗口并导航到您想要创建Maven项目的目录。输入以下命令:

mvn archetype:generate -DgroupId=com.example.websocket -DartifactId=websocket-demo -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

该命令将使用Maven的标准WebApp原型生成一个名为“websocket-demo”的项目。

2.添加依赖

在项目的pom.xml文件中添加以下依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
   <groupId>org.webjars</groupId>
   <artifactId>webjars-locator-core</artifactId>
</dependency>
<dependency>
   <groupId>org.webjars</groupId>
   <artifactId>sockjs-client</artifactId>
   <version>1.0.2</version>
</dependency>
<dependency>
   <groupId>org.webjars</groupId>
   <artifactId>stomp-websocket</artifactId>
   <version>2.3.3</version>
</dependency>

3.编写WebSocket配置类

在您的项目中创建一个类,并添加@Configuration@EnableWebSocketMessageBroker注解。这将为您的应用程序配置WebSocket端点,并启用STOMP消息传输。

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

   @Override
   public void registerStompEndpoints(StompEndpointRegistry registry) {
      registry.addEndpoint("/ws").withSockJS();
   }

   @Override
   public void configureMessageBroker(MessageBrokerRegistry config) {
      config.enableSimpleBroker("/topic");
      config.setApplicationDestinationPrefixes("/app");
   }

}

代码中的/ws路径是WebSocket端点的路径,withSockJS()方法启用了SockJS支持。

configureMessageBroker()方法配置了消息代理,定义了一个前缀为/topic的简单消息代理,以支持广播式消息传输。setApplicationDestinationPrefixes()方法定义了应用程序中接收消息的前缀为/app

4.编写控制器类

创建一个控制器类,并在其中编写一些方法,以便客户端可以发送和接收消息。以下是一个基本的示例:

@Controller
public class ChatController {

   @MessageMapping("/chat.sendMessage")
   @SendTo("/topic/public")
   public ChatMessage sendMessage(@Payload ChatMessage chatMessage) {
      return chatMessage;
   }

   @MessageMapping("/chat.addUser")
   @SendTo("/topic/public")
   public ChatMessage addUser(@Payload ChatMessage chatMessage,
                                SimpMessageHeaderAccessor headerAccessor) {
      headerAccessor.getSessionAttributes().put("username", chatMessage.getSender());
      return chatMessage;
   }

}

@MessageMapping注解中定义了两个端点以接收客户端的消息。

sendMessage()方法用于将客户端发送的消息广播给所有订阅了/topic/public主题的客户端。

addUser()方法用于运行代码以便处理客户端连接。SimpMessageHeaderAccessor类用于获取用户信息。

5.编写客户端JavaScript

最后,请根据您的需求编写前端代码以连接WebSocket并发送/接收消息。此处只提供一个基本示例:

var socket = new SockJS('/ws');
var stompClient = Stomp.over(socket);

stompClient.connect({}, function(frame) {
   console.log('Connected: ' + frame);
   stompClient.subscribe('/topic/public', function(chatMessage) {
      showMessage(JSON.parse(chatMessage.body));
   });
});

function sendName() {
   var name = document.getElementById("name").value;
   var message = {
      sender : name,
      content: "has joined the conversation!"
   };
   stompClient.send("/app/chat.addUser", {}, JSON.stringify(message));
}

function sendMessage() {
   var name = document.getElementById("name").value;
   var messageContent = document.getElementById('messageContent').value;
   var chatMessage = {
      sender : name,
      content: messageContent
   };
   stompClient.send("/app/chat.sendMessage", {}, JSON.stringify(chatMessage));
}

function showMessage(message) {
   console.log(message);
   var response = document.getElementById('response');
   var p = document.createElement('p');
   p.innerHTML = message.sender + ": " + message.content;
   response.appendChild(p);
}

以上例子会让用户输入名字、消息内容,然后将消息传送给服务器。在接收到服务器返回消息后,它还会在页面上显示它们。

在以上控制器类和客户端JavaScript的示例中,我们展示了如何实现一对一聊天和公告。其中,通过建立WebSocket连接实现实时消息传递,通过STOMP协议实现消息的订阅和广播。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot+WebSocket实现一对一聊天和公告的示例代码 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • firefox浏览器firebug插件调试js(jqueryt)程序(firefox调试js)

    Firefox浏览器Firebug插件调试JS(JQuery)程序 什么是Firebug插件? Firebug插件是一款浏览器调试工具,它能帮助开发者追踪并调试网站中发生的各种问题。Firebug的一些主要功能包括: HTML和CSS编辑器,可以实时地对代码进行修改并查看更改后的效果; JavaScript调试器,可以对代码进行单步调试、查看变量和监控函数执…

    jquery 2023年5月28日
    00
  • 如何在jQuery中检查IP地址的验证

    IP地址是一个常用的网络地址格式,它由四个数字组成,每个数字都有256种可能,因此,在进行IP地址的验证时需要进行各种检查。 在jQuery中检查IP地址的验证,需要使用正则表达式来匹配IP地址的格式。可以使用如下代码来验证一个IP地址: var ipAddress = "192.168.0.1"; var ipPattern = /(?…

    jquery 2023年5月12日
    00
  • 基于jQuery实现的打字机效果

    下面是“基于jQuery实现的打字机效果”的完整攻略,包含了以下内容: 一、准备工作 1.1 引入jQuery库 在实现“基于jQuery实现的打字机效果”之前,我们需要先在页面中引入jQuery库,可以使用CDN或本地引入,如下: <script src="https://cdn.bootcss.com/jquery/3.5.1/jquer…

    jquery 2023年5月28日
    00
  • jQWidgets jqxTooltip showDelay属性

    以下是关于 jQWidgets jqxTooltip 的 showDelay 属性的完整攻略: jQWidgets jqxTooltip showDelay 属性 showDelay 属性用于鼠标悬停在目标元素上后,显示提示框之前的延迟时间。默认况下,该属性的值为 500 毫秒。 语法 $(‘#targetElement’).jqxTooltip({ con…

    jquery 2023年5月11日
    00
  • jQuery Ajax异步处理Json数据详解

    jQuery Ajax异步处理Json数据详解 什么是Ajax Ajax(Asynchronous JavaScript And XML)指的是一种无需重载整个页面的情况下,向服务器发出异步请求并接收响应数据的技术。它通过 JavaScript 在后台与服务器进行数据交互,在不刷新页面的情况下更新了页面。Ajax技术使得动态网页的实现更加便捷、快速且具有很好…

    jquery 2023年5月27日
    00
  • 如何使用jQuery设计图片滑块

    使用jQuery设计图片滑块的攻略如下: 1. 引入jQuery库 首先需要在HTML文件的<head>标签中引入jQuery库。可以直接使用CDN链接,也可以下载后本地引入。 <head> <script src="https://cdn.jsdelivr.net/npm/jquery"></s…

    jquery 2023年5月12日
    00
  • 如何使用jQuery Mobile创建基本的翻转切换开关

    下面是使用jQuery Mobile创建基本的翻转切换开关的攻略: 1. 引入jQuery Mobile库文件 在使用jQuery Mobile之前需要先引入该库文件,可以从官方网站下载。示例代码如下: <!–jquery library–> <script src="https://code.jquery.com/jquer…

    jquery 2023年5月12日
    00
  • javascript实现的左右无缝滚动效果

    实现左右无缝滚动效果,可借助于jQuery插件Marquee或Carousel等实现。本文以实现无限滚动轮播为例,提供以下详细攻略。 使用jQuery Marquee插件实现无限滚动轮播 jQuery Marquee是一款jQuery插件,用来实现前端展示的无限滚动,尤其适用于网站的一些公告、广告等需要循环横幅展示的业务场景。实现步骤如下: 引入jQuery…

    jquery 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部