1、Pom.xml

 <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>

2、Spring-servlet,xml

 <context:component-scan base-package="com.websocket"/>

3、WebSocketConfig.java

package com.websocket;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; /**
* Created by HendSame on 11/29/16.
*/
@Configuration
@EnableWebMvc
@EnableWebSocket
public class WebSocketConfig extends WebMvcConfigurerAdapter implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
//允许连接的域,只能以http或https开头
String[] allowsOrigins = {"*"}; //WebIM WebSocket通道
registry.addHandler(allBedWebSocketHandler(),"/websocket/get/all/data/rt").setAllowedOrigins(allowsOrigins).addInterceptors(myInterceptor());
registry.addHandler(allBedWebSocketHandler(), "/sockjs/websocket/get/all/data/rt").setAllowedOrigins(allowsOrigins).addInterceptors(myInterceptor()).withSockJS(); registry.addHandler(bedWebSocketHandler(),"/websocket/get/by/time").setAllowedOrigins(allowsOrigins).addInterceptors(myInterceptor());
registry.addHandler(bedWebSocketHandler(), "/sockjs/websocket/get/by/time").setAllowedOrigins(allowsOrigins).addInterceptors(myInterceptor()).withSockJS(); registry.addHandler(alarmsWebSocketHandler(),"/websocket/get/alarms").setAllowedOrigins(allowsOrigins).addInterceptors(myInterceptor());
registry.addHandler(alarmsWebSocketHandler(), "/sockjs/websocket/get/alarms").setAllowedOrigins(allowsOrigins).addInterceptors(myInterceptor()).withSockJS(); registry.addHandler(overViewWebSocketHandler(),"/websocket/get/overview").setAllowedOrigins(allowsOrigins).addInterceptors(myInterceptor());
registry.addHandler(overViewWebSocketHandler(), "/sockjs/websocket/get/overview").setAllowedOrigins(allowsOrigins).addInterceptors(myInterceptor()).withSockJS(); }
@Bean
public AllBedWebSocketHandler allBedWebSocketHandler() {
return new AllBedWebSocketHandler();
} @Bean
public BedWebSocketHandler bedWebSocketHandler() {
return new BedWebSocketHandler();
} @Bean
public AlarmsWebSocketHandler alarmsWebSocketHandler() {
return new AlarmsWebSocketHandler();
} @Bean
public OverViewWebSocketHandler overViewWebSocketHandler() {
return new OverViewWebSocketHandler();
} @Bean
public WebSocketHandshakeInterceptor myInterceptor(){
return new WebSocketHandshakeInterceptor();
}
}

4、BedWebSocketHandler.java

package com.websocket;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.bbkj.nursestation.common.ApiResult;
import com.bbkj.nursestation.common.UserVO;
import com.bbkj.nursestation.site.service.DeviceService;
import com.bbkj.nursestation.site.vi.HospitalBedDataVI;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler; import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map; /**
* Created by hy on 11/29/16.
*/
@Component
public class BedWebSocketHandler extends TextWebSocketHandler { private final static List<WebSocketSession> sessions = Collections.synchronizedList(new ArrayList<WebSocketSession>()); @Autowired
private DeviceService deviceService;
//接收文本消息,并发送出去
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
super.handleTextMessage(session, message);
byte[] bytes = message.asBytes();
String params = new String(bytes);
JSONObject object=JSON.parseObject(params);
UserVO userVO = new UserVO();
userVO = (UserVO) session.getAttributes().get("websocketUser"); ApiResult<Map<String, Integer>> apiResult = new ApiResult<>(1, "error");
HospitalBedDataVI hospitalBedDataVI = new HospitalBedDataVI();
hospitalBedDataVI.setEn(Long.parseLong(object.get("en").toString()));
hospitalBedDataVI.setPaitenid(Long.parseLong(object.get("paitenid").toString()));
apiResult = deviceService.getHosptialBedRealTimeData4Websocket(hospitalBedDataVI);
apiResult.setUser(userVO);
session.sendMessage(new TextMessage(apiResult.toString())); } //连接建立后处理
@SuppressWarnings("unchecked")
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session);
//处理离线消息
}
//抛出异常时处理
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
if(session.isOpen()){
session.close();
} sessions.remove(session);
}
//连接关闭后处理
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { sessions.remove(session);
} @Override
public boolean supportsPartialMessages() {
return false;
} /**
* 给所有在线用户发送消息
*
* @param message
*/
public void sendMessageToUsers(TextMessage message) {
for (WebSocketSession user : sessions) {
try {
if (user.isOpen()) {
user.sendMessage(message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
} /**
* 给某个用户发送消息
*
* @param userName
* @param message
*/
public void sendMessageToUser(String userName, TextMessage message) {
for (WebSocketSession user : sessions) {
if (user.getAttributes().get("username").equals(userName)) {
try {
if (user.isOpen()) {
user.sendMessage(message);
}
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
}
}

5、DeviceService.java

package com.site.service;

import com.bbkj.nursestation.common.ApiResult;
import com.bbkj.nursestation.site.entity.Device;
import com.bbkj.nursestation.site.vi.HospitalBedDataVI;
import com.bbkj.nursestation.site.vo.HosptialBedDataNow;
import com.bbkj.nursestation.site.vo.OverviewVO; import java.util.List;
import java.util.Map; /**
* Created by hy on 11/21/16.
*/
public interface DeviceService { ApiResult<Map<String,Integer>> getHosptialBedRealTimeData4Websocket(HospitalBedDataVI hospitalBedDataVI); }

7、Javascript

<script type="text/javascript" src="js/sockjs-1.1.1.min.js"></script>
<script>
var websocket;
if ('WebSocket' in window) { //某张床位实时信息接口
websocket = new WebSocket("ws://192.168.1.114:8099/websocket/get/by/time");
} else if ('MozWebSocket' in window) { websocket = new MozWebSocket("ws://192.168.1.114:8099/websocket/get/by/time");
} else { websocket = new SockJS("http://192.168.1.114:8099/sockjs/websocket/get/by/time"); }
websocket.onopen = function (evnt) {
alert("建立连接");
};
websocket.onmessage = function (evnt) {
alert(evnt.data)
};
websocket.onerror = function (evnt) {
};
websocket.onclose = function (evnt) {
} $('#send').click(function(e) {
var params ="{'en':1,'paitenid':1}";
websocket.send(params);
});
</script>

基于Spring mvc 的Websocket 开发的更多相关文章

  1. 基于Spring MVC的Web应用开发(三) - Resources

    基于Spring MVC的Web应用开发(3) - Resources 上一篇介绍了在基于Spring MVC的Web项目中加入日志,本文介绍Spring MVC如何处理资源文件. 注意到本项目的we ...

  2. 【Java Web开发学习】Spring MVC整合WebSocket通信

    Spring MVC整合WebSocket通信 目录 ========================================================================= ...

  3. 基于Spring MVC 实现拦截器

    Spring MVC 拦截器 一,具体内容: 在所有的开发之中拦截器属于一个重要的组件,可以说几乎所有的项目都会提供的概念应用,不管是Spring MVC,还是Struts 2.x都是提供有拦截器的, ...

  4. Spring MVC第一课:用IDEA构建一个基于Spring MVC, Hibernate, My SQL的Maven项目

    作为一个Spring MVC新手最基本的功夫就是学会如何使用开发工具创建一个完整的Spring MVC项目,本文站在一个新手的角度讲述如何一步一步创建一个基于Spring MVC, Hibernate ...

  5. 基于spring mvc的图片验证码实现

    本文实现基于spring mvc的图片验证码,分后台代码和前端页面的展现以及验证码的验证. 首看后台实现代码: @RequestMapping({"authCode"}) publ ...

  6. Spring Boot 2.X(三):使用 Spring MVC + MyBatis + Thymeleaf 开发 web 应用

    前言 Spring MVC 是构建在 Servlet API 上的原生框架,并从一开始就包含在 Spring 框架中.本文主要通过简述 Spring MVC 的架构及分析,并用 Spring Boot ...

  7. 使用IDEA和gradle搭建Spring MVC和MyBatis开发环境

    1. 概述 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具. 它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐 ...

  8. ssm(spring mvc+mybatis)+netty4开发qiq

    发布时间:2018-10-30   技术:spring mvc+mybatis+nett4+layui   概述 简单快捷的IM方案,快速打造在线IM,可用于公司内网.外网通讯,客服系统等,实现了so ...

  9. spring MVC之注解开发控制器(二)

    开发表单控制器 在传统的Spring MVC开发方法中,是通过扩展SimpleFormController类来创建简单的表单控制器.这样就定义了基本的表单处理流程,并允许通过覆盖几个生命周期方法来定制 ...

随机推荐

  1. [Noip2016]天天爱跑步 LCA+DFS

    [Noip2016]天天爱跑步 Description 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.?天天爱跑步?是一个养成类游戏,需要玩家每天按时上线,完成打卡任 ...

  2. 普通java工程的resources目录寻址

    问题: 普通java工程的src/main/resources目录下的配置文件如何寻址 在src/main/java目录下的代码中如何访问src/main/resources目录下的配置文件? Mav ...

  3. MVC4学习笔记之--身份认证过滤器

    过滤器作为MVC模式中面向切面编程应用很广泛,例如身份验证,日志,异常,行为截取等.博客园里面的大神对应过滤器的介绍以及很多,MVC4中不同的过滤器也介绍得很清楚.FlyDragon  辉太 禁止吸烟 ...

  4. cvs 文件如何解析?

    QList<QStringList> RwCvs::readToList(const QString &path, const QString separator) { QList ...

  5. 《Python 机器学习》笔记(一)

    赋予计算机学习数据的能力 涵盖: 1.机器学习的一般概念 2.机器学习方法的三种类型和基本术语 3.成功构建机器学习系统所需的模块 机器学习的三种不同方法 1.监督学习 2.无监督学习 3.强化学习 ...

  6. 字符串之strstr

    功能:查找第二个字符串是否存在第一个字符串中. 输入:字符串1,字符串2 返回值:成功返回str1中的位置,失败返回NULL #include <iostream> using names ...

  7. shuit模块

    shuit模块 #高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length])将文件内容拷贝到另一个文件中,可以部分内容 def copyf ...

  8. Python基础-os和sys模块

    os模块提供对操作系统进行调用的接口 import os os.getcwd() # 获取当前工作目录 os.chdir(r'd:\fansik') # 修改对当前工作目录 print(os.curd ...

  9. MySQL安装后的设定及其变量(参数)的设置

    1.为所有root用户设定密码:mysql> SET PASSWORDmysql> update mysql.user SET password=PASSWORD("your_p ...

  10. Learning Notes for HTML/CSS/JS

    @1:内部样式表 & 外部样式表 内部样式表的定义,放在<style></style>中,<style>标签放在<head>中 <html ...