前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >spring+tomcat7 + websocket + sock.js消息推送

spring+tomcat7 + websocket + sock.js消息推送

作者头像
DencyCheng
发布2018-11-05 16:27:43
发布2018-11-05 16:27:43
1.4K00
代码可运行
举报
文章被收录于专栏:SpringBootSpringBoot
运行总次数:0
代码可运行

版权声明:本文为博主原创文章,未经博主允许不得转载。

使用STOMP 的目的,目前还有浏览器不支持websocket ,所有用了STOMP 

1.pom文件添加

代码语言:javascript
代码运行次数:0
运行
复制
	    <!-- web socket 需要的 library -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-websocket</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-messaging</artifactId>
			<version>${spring.version}</version>
		</dependency>

2.添加WebSocketConfig.java 在能被spring扫描到的包下即可

代码语言:javascript
代码运行次数:0
运行
复制
package com.baiying.kkw.util;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;

/**
 * 
 * @author DencyCheng
 *
 */
@Configuration
@EnableWebMvc
@EnableWebSocketMessageBroker //能够在 WebSocket 上启用 STOMP
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
 
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");//订阅地址
        config.setApplicationDestinationPrefixes("/websocket");
    }
 
    public void registerStompEndpoints(StompEndpointRegistry registry) {
    	 //setAllowedOrigins("*") 解决了跨域问题
    	 registry.addEndpoint("/gs-guide-websocket").setAllowedOrigins("*").withSockJS();
    }
 
}

3.添加 WebSocketUtil

代码语言:javascript
代码运行次数:0
运行
复制
package com.baiying.kkw.util;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Component;

/**
 * 
 * @author DencyCheng
 *
 */
@Component
public class WebSocketUtil {
	@Autowired
	private SimpMessagingTemplate messagingTemplate;

	/**
	 * 发送数据
	 * 
	 * @param url
	 * @param msg
	 */
	public void sendMsg(String url, Object msg) {
		messagingTemplate.convertAndSend(url, msg);
	}

	
}

4.发送数据

代码语言:javascript
代码运行次数:0
运行
复制
        @Autowired
	private WebSocketUtil socketUtil;

        /**
	 * /topic/message 要推送的频道
	 */
	@RequestMapping("/send")
	@ResponseBody
	public void send() {
		socketUtil.sendMsg("/topic/message","拉拉");
	}

5.前台接接收

代码语言:javascript
代码运行次数:0
运行
复制
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="../css/ydWebLogin.css" />
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/stomp.js/2.3.3/stomp.min.js"></script>
<script src="https://cdn.bootcss.com/sockjs-client/1.0.0/sockjs.min.js"></script>
</head>
<body>
</body>


<script type="text/javascript">
	$(document).ready(function() {
		var socket = new SockJS('${pageContext.request.contextPath}/gs-guide-websocket');
		stompClient = Stomp.over(socket);
		stompClient.connect({}, function(frame) {
			console.log('Connected: ' + frame);
			stompClient.subscribe('/topic/message', function(msg) {
				console.log(msg.body);
				$("body").append("<p>"+msg.body+"</p>");
			});
		});
	});
</script>
</html>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年08月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档