jfinal html5,Jfinal框架整合webSocket技术功能实现

技术难度:简单

在这里我会用最简单的方法实现JFinal框架结合webSocket最基础的功能,以至于后续业务的拓展需要小伙伴们依据实际情况去实现相应的开发!

废话不多说,直接上代码!

1、编写webSocket类

package morality.ws;

import java.io.IOException;

import javax.websocket.OnClose;

import javax.websocket.OnError;

import javax.websocket.OnMessage;

import javax.websocket.OnOpen;

import javax.websocket.Session;

import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/ws/getsingle")

public class webSocket {

private Session session;

@OnOpen

public void onOpen(Session session) {

this.session = session;

}

/**

* 收到客户端消息时触发

* @param relationId

* @param userCode

* @param message

* @return

* @throws IOException

* @throws InterruptedException

*/

@OnMessage

public void onMessage(Session session, String key) throws IOException {

//向客户端返回发送过来的消息

session.getBasicRemote().sendText(key);

}

/**

* 异常时触发

* @param relationId

* @param userCode

* @param session

*/

@OnError

public void onError(Throwable throwable,Session session) {}

/**

* 关闭连接时触发

* @param relationId

* @param userCode

* @param session

*/

@OnClose

public void onClose(Session session) {}

}

2、编写Handler

package morality.handler;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.jfinal.handler.Handler;

public class WebSockethandler extends Handler {

@Override

public void handle(String target, HttpServletRequest request,HttpServletResponse response, boolean[] isHandled) {

// TODO Auto-generated method stub

if(target.indexOf("/ws/getsingle") == -1){

next.handle(target, request, response, isHandled);

}

}

}

JFinal将不再处理带有“/ws/getsingle”的请求,交由webSocket处理;

3、配置Config

@Override

public void configHandler(Handlers me) {

// TODO Auto-generated method stub

me.add(new WebSockethandler());

}

4、HTML页面

Java后端WebSocket的Tomcat实现

Welcome

发送消息


关闭WebSocket连接


var websocket = null;

//判断当前浏览器是否支持WebSocket

if ('WebSocket' in window) {

websocket = new WebSocket("ws://localhost:8080/ws/getsingle");

}

else {

alert('当前浏览器 Not support websocket')

}

//连接发生错误的回调方法

websocket.onerror = function () {

setMessageInnerHTML("WebSocket连接发生错误");

};

//连接成功建立的回调方法

websocket.onopen = function () {

setMessageInnerHTML("WebSocket连接成功");

}

//接收到消息的回调方法

websocket.onmessage = function (event) {

setMessageInnerHTML(event.data);

}

//连接关闭的回调方法

websocket.onclose = function () {

setMessageInnerHTML("WebSocket连接关闭");

}

//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。

window.onbeforeunload = function () {

closeWebSocket();

}

//将消息显示在网页上

function setMessageInnerHTML(innerHTML) {

document.getElementById('message').innerHTML += innerHTML + '
';

}

//关闭WebSocket连接

function closeWebSocket() {

websocket.close();

}

//发送消息

function send() {

var message = document.getElementById('text').value;

websocket.send(message);

}

那如果一切顺利的话你将看到如下页面:

886fb0907932

webSocket连接成功

接下来你就可以在input框内输入内容,点击‘发送消息’,内容将显示在页面上:

886fb0907932

成功

好啦!小伙伴们,这样一个简单的webSocket+Jfinal就搭建成功啦,快来试试吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

行业实战 | 5G+边缘计算+“自由视角” 让体育赛事更畅快

简介: 世界本是多维的。进入5G时代,观众对多维度视觉体验的需求日益增长,5G MEC网络与边缘计算的结合,具备大带宽、低延迟特性,使视频多维视觉呈现成为现实。在第二十三届CUBA中国大学生篮球联赛期间,中国电…

华为汪涛:走向智能世界2030,无线网络未来十年十大产业趋势

2021全球移动宽带论坛(Global MBB Forum)期间,华为常务董事、ICT基础设施业务管理委员会主任汪涛发表了题为“走向智能世界2030,无线网络未来十年十大趋势”的主题演讲。汪涛表示:“未来十年,是走向智能世界…

python怎么输入一个数字并调用_Python3 实例(一)

原标题:Python3 实例(一) Python Hello World 实例 以下实例为学习Python的第一个实例,即如何输出"Hello World!": 实例 # -*- coding: UTF-8 -*- # Filename : helloworld.py # author by : www.runoob.com…

未来教育计算机书,未来教育.全国计算机等级考试

1册图书1张光盘,轻松应对2018年一级计算机基础及MS Office应用考试 n 1.历年真题精选,全方位把握真考动向,具有练习价值 n (1)新大纲、新题型、新题库,全方位解读无纸化考试,帮助考生轻松过关。 n (2)精选2017年~2016年…

python制作简单网页_python 跑服务器,访问自己制作的简单页面

1 python 跑服务器,访问自己制作的简单页面2 # winb出现一个网址http:/0.0.1:5000/复制到浏览器查看 # http://127.0.0.1:5000/home做这个首先要安装好python的flask,前面有详细的安装步骤 具体代码如下# coding:utf-8 # Flask构造函数,从fla…

华为云专属月·行业深耕专项行动正式开启

10月15日,以“云上共创 互联网新价值”为主题的“华为云专属月行业深耕”线上发布会圆满举办。会上,华为云宣布“华为云专属月行业深耕专项行动”正式启动,本次专属月期间,华为云将面向包括电商、游戏、移动出行三大行业在内的互联…

计算机电子工程专业就业前景,就业前景好的4大类专业,电气电子类上榜,有你喜欢的吗?...

原标题:就业前景好的4大类专业,电气电子类上榜,有你喜欢的吗?行业的发展和社会的发展是紧密相连的,所以为了推动社会各个行业的发展,在大学中就会设立很多类型的专业。下面来介绍一下就业前景好的4大类专业…

Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外

简介: 3 月 20 日,Nacos 2.0 正式发布。Nacos 是阿里巴巴在 2018 年开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,也可以理解为微服务的注册中心 配置中心。 来源 | 阿里巴巴云原生公众号 3 月 20 日&#xff0c…

以系统化视角反观产品运营,解读提升用户转化的“四部曲”

简介: 正常的活动运营通常会围绕公司经营目标,针对不同性质、不同类型的活动开展工作。这样的活动一般会分四个阶段:活动准备、活动策划、活动执行与活动复盘阶段。 作者:友盟数据大使 Suffering 如今,移动互联网的红…

移动云亮相 2021 IDC 年度盛典 共话变革与赋能

“过去一年,是考验各行业在面临多重挑战时保持数字弹性能力的一年。未来十年,是数字化转型成为企业主旋律、加速推进的十年。”10月15日,由IDC中国主办的“2021第六届IDC中国数字化转型年度盛典”在上海圆满落幕。盛典以“数字焕颜 科技有型”…

春色满园关不住,带你体验阿里云 Knative

简介: Knative 是基于 Kubernetes 的开源 Serverless 应用编排框架。阿里云 Knative 在社区Knative基础之上,与阿里云产品进行了深度的融合,给你带来最纯粹的容器化 Serverless 体验。 Knative 是基于 Kubernetes 的开源 Serverless 应用编排…

python选择排序算法图解_python基本算法之实现归并排序(Merge sort)

0、前言 评判一个算法的好坏的标准: 时间复杂度 空间复杂度 1、归并排序算法是什么? 冒泡排序(Bubble Sort)是一种建立在归并操作上面的一种有效的排序算法,由John von neumann于1945年发明。采用分治法(Divide and Conquer&#…

从前端智能化看“低代码/无代码”

简介: 什么是低代码/无代码开发?业界对于低代码/无代码开发是否存在其他不同的理解?低代码开发和无代码开发之间的区别是什么? 作者 | 甄子 来源 | 阿里技术公众号 一 概念 1 什么是低代码/无代码开发?业界对于低代码…

初二物理模型有哪些_暑假新初二、新初三的数学该怎么学,教辅怎么买,题该怎么刷?看这里~...

这个暑假对于新初二和新初三的孩子都非常关键,因为下一学期的数学难度都要上升一个台阶,自古相传一句老话“初二两极分化,初三天上地下”,其实引起这么大化学反应的原因就是在于数学和科学这两门理科在八上和九上有了一个质变。我…

低代码会让程序员更加内卷吗?

作者| Mr.K 编辑| Emma来源| 技术领导力(ID:jishulingdaoli)今天的主题呢主要是来源于最近的一个很火的话题——『低代码』。低代码会不会让程序员更加内卷?要回答这个问题,需要先弄清楚:低代码适合做什么,不适合做什…

技术干货 | 应用上线前的“体检”,你知道需要检测哪些指标吗?

简介: 应用上线前检测哪些项目?如何检测?检测数据指标包括哪些? 随着越来越多的企业基于 mPaaS 搭建并上线新的 App,App 的上线质量也成为各个客户关注的重点。上线前检测哪些项目?如何检测?检…

python 机器学习_基于 Python 语言的机器学习工具Sklearn

本篇介绍了Sklearn机器学习基础,从Sklearn的简介,模块以及与tensorflow的优劣势对比来了解基于Python语言的机器学习工具。01、Sklearn简介sklearn(scikit-learn)是Python重要的学习库,它封装了机器学习中常用的算法,包括监督学习…

那些你不知道的TCP冷门知识!

简介: 最近在做数据库相关的事情,碰到了很多TCP相关的问题,新的场景新的挑战,有很多之前并没有掌握透彻的点,大大开了一把眼界,选了几个案例分享一下。 最近在做数据库相关的事情,碰到了很多TC…

CPU 可以跑多快?地球到火星的距离告诉你!

来源:码农的荒岛求生作者:码农的荒岛求生这张出自Google大神 Jeff Dean的图,展示系统中各种关键操作的时延具体有多少。需要注意的是这张图上的数据自2012年后就没有再更新过了,统计自2020年的最新数据见这里:这张图中…

步进电机五根线怎么接_步进驱动和伺服驱动的区别

概述步进电机主要是依相数来做分类,而其中又以二相、五相步进电机为目前市场上所广泛采用。二相步进电机每转最细可分割为400等分,五相则可分割为1000等分,所以表现出来的特性以五相步进电机较佳、加减速时间较短、动态惯性较低。随着全数字式…