springboot2.0.2 websocket 广播消息和一对一通信配置初始化

import com.cmd.exchange.common.constants.WebSocketTopicKey;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
import org.springframework.web.socket.server.standard.TomcatRequestUpgradeStrategy;
import org.springframework.web.socket.server.support.DefaultHandshakeHandler;

/**
 * 参考https://spring.io/guides/gs/messaging-stomp-websocket/
 * 注意: websocket的url和rest接口的url一定要区分,否则websocket握手的请求会跑到rest接口里,导致建立链接失败。
 * 错误的信息: 服务器返回状态码200
 * Created by linmingren on 2017/8/30.
 */
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

//    @Bean
//    public ServerEndpointExporter serverEndpointExporter() {
//        return new ServerEndpointExporter();
//    }
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        //一对一订阅发送
        config.setUserDestinationPrefix(WebSocketTopicKey.P2PPUSHBASEPATH);
        //有3个主题可以发布信息, 客户端注册到这些主题下面的具体的内容
        config.enableSimpleBroker(
                WebSocketTopicKey.PRODUCERPATH1,
                WebSocketTopicKey.PRODUCERPATH2,
                WebSocketTopicKey.PRODUCERPATH3,
                WebSocketTopicKey.P2PPUSHBASEPATH,//一对一通信需要注册订阅
                WebSocketTopicKey.PRODUCERPATH4);
        //这个是处理客户端主动发上来的请求
        config.setApplicationDestinationPrefixes(WebSocketTopicKey.WEBSOCKETPATHPERFIX);

    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        //如果客户端不支持websocket, 则使用sockjs
        //必须配置setAllowedOrigins, 否则浏览器连接websocket会提示403

        registry.addEndpoint(WebSocketTopicKey.WEBSOCKETPATH).setAllowedOrigins("*").withSockJS();
        //必须配置握手处理器,否则stomp客户端无法连接
        registry.addEndpoint(WebSocketTopicKey.WEBSOCKETPATH)
                .setHandshakeHandler(new DefaultHandshakeHandler(new TomcatRequestUpgradeStrategy()))
                .setAllowedOrigins("*");
    }

}

  2、服务端发送消息给客服端,一对一通讯订阅拼接方式如:“/user/唯一标识的id/msg”

template.convertAndSendToUser(websocketMonitor.getUser()+"", WebSocketTopicKey.P2PPUSHPATH, roomDataResponse);

  3、服务端广播消息

//订阅,广播发送内容
template.convertAndSend("/xx/xx/xx", xxx);

  

原文地址:https://www.cnblogs.com/itjiandan/p/11685458.html

时间: 2024-10-08 03:56:28

springboot2.0.2 websocket 广播消息和一对一通信配置初始化的相关文章

springboot2.0.3使用jpa和hibernate的方式配置多数据源(sqlite和mysql)

application.properties配置: #数据库配置 mysql.spring.datasource.jdbc-url =jdbc:mysql://127.0.0.1:3306/test mysql.spring.datasource.username=admin mysql.spring.datasource.password=123456 mysql.spring.datasource.driver-class-name=com.mysql.jdbc.Driver #数据库连接池

springboot2.0集成webSocket

WebSocket和http的区别? http协议是用在应用层的协议,他是基于tcp协议的,http协议建立链接也必须要有三次握手才能发送信息. http链接分为短链接,长链接,短链接是每次请求都要三次握手才能发送自己的信息.即每一个request对应一个response.长链接是在一定的期限内保持链接.保持TCP连接不断开.客户端与服务器通信,必须要有客户端发起然后服务器返回结果.客户端是主动的,服务器是被动的. WebSocket WebSocket他是为了解决客户端发起多个http请求到服

springboot2.0入门(八)-- profile启动文件配置

一.不同环境使用不同配置文件 复制多份配置文件,修改不同的端口,在application.yml文件中添加具体启动的配置文件,可以看到不同的启动端口,使用maven的打包命令,将项目打入jar包: <!-- 跳打包test文件报错--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId>

springboot整合websocket实现一对一消息推送和广播消息推送

maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> 常量类 //webSocket相关配置 //链接地址 public static String WEBSOCKETPATHPERFIX = "/ws-push&

springboot2.0+redis实现消息队列+redis做缓存+mysql

本博客仅供参考,本人实现没有问题. 1.环境 先安装redis.mysql 2.springboot2.0的项目搭建(请自行完成),本人是maven项目,因此只需配置,获取相应的jar包,配置贴出. <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifact

使用Websocket实现消息推送

WebSocket 上 联系客服功能在项目中很难避免,一般有下面三种实现方式: 使用http的get方式轮询 接入第三方IM系统 自己的IM系统 基于socket 基于websocket 第一种方式,最low的,实现简单,但是浪费用户流量:第二种方式,接入简单,功能强大,但是可能需要一定的成本(比如付费):第三种方式,需要一定的开发成本(服务器托管费用忽略).对于第三种情况的 socket,实现IM的文字加音视频聊天,做过的话你可以也会直接懵逼.但是,简单的文字聊天还好,不过你还是需要去定义一些

2018最新SpringBoot2.0教程(零基础入门)

一.零基础快速入门SpringBoot2.0 1.SpringBoot2.x课程全套介绍和高手系列知识点 简介:介绍SpringBoot2.x课程大纲章节 java基础,jdk环境,maven基础 2.SpringBoot2.x依赖环境和版本新特性说明 简介:讲解新版本依赖环境和springboot2新特性概述 3.快速创建SpringBoot2.x应用之手工创建web应用 简介:使用Maven手工创建SpringBoot2.x应用 4.快速创建SpringBoot2.x应用之工具类自动创建we

Netty利用ChannelGroup广播消息

在Netty中提供了ChannelGroup接口,该接口继承Set接口,因此可以通过ChannelGroup可管理服务器端所有的连接的Channel,然后对所有的连接Channel广播消息. Server端: public class BroadCastServer { public static void run(int port) { EventLoopGroup boss = new NioEventLoopGroup(); EventLoopGroup worker = new NioE

Remoting异步回调,向在线用户广播消息

本文目的:向Remoting在线客户端广播消息. 使用的主要技术:异步,回调,广播. 实现过程: 定义远程实例 using System; using System.Collections.Generic; using System.Text; using System.Runtime.Remoting.Messaging; namespace RemoteObject { //定义委托,显示回调消息 public delegate void ShowCallBackMsg(string str