




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.zJava和WebSocket开发网页聊天室一、工程简介WebSocket是HTML5一种新的协议,它实现了浏览器与效劳器全双工通信,这里就将使用WebSocket来开发网页聊天室,前端框架会使用AmazeUI,后台使用Java,编辑器使用UMEditor。二、涉及知识点网页前端〔HTML+CSS+JS〕和Java三、软件环境Tomcat7JDK7EclipseJavaEE现代浏览器效果截图效果1效果2五、工程实战1.新建工程翻开桌面上EclipseJavaEE,新建一个名为Chat的DynamicWebProject,然后导入处理JSON格式字符串所需要的包,把mons-beanutils-1.8.0.jar、mons-collections-3.2.1.jar、mons-lang-2.5.jar、mons-logging-1.1.1.jar、ezmorph-1.0.6.jar和json-lib-2.4-jdk15.jar这几个包放在WebContent/WEB-INF/lib目录下,最后把工程发布到Tomcat效劳器上,到此空工程就搭建完成了。2.编写前端页面在WebContent目录下新建一个名为inde*.jsp的页面,这里使用了AmazeUI框架,它是一个跨屏自适应的前端框架,消息输入框使用了UMEditor,它是一个富文本在线编辑器,能让我们的消息内容多姿多彩。首先从AmazeUI官网下载压缩包,然后解压把assets文件夹拷贝到WebContent目录下,这样我们就能使用AmazeUI了。再从UEditer官网下载Mini版的JSP版本压缩包,解压后把整个目录拷贝到WebContent目录下,接下来就可以编写前端代码了,代码如下〔你可以按照自己的喜好编写〕:<%pagelanguage="java"contentType="te*t/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><htmllang="zh"><head><metacharset="utf-8"><meta-equiv="*-UA-patible"content="IE=edge"><metaname="viewport"content="width=device-width,initial-scale=1,ma*imum-scale=1,user-scalable=no"><title>ShiYanLouChat</title><!--Setrenderenginefor360browser--><metaname="renderer"content="webkit"><!--NoBaiduSiteapp--><meta-equiv="Cache-Control"content="no-siteapp"/><linkrel="alternateicon"href="assets/i/favicon.ico"><linkrel="stylesheet"href="assets/css/amazeui.min.css"><linkrel="stylesheet"href="assets/css/app.css"><!--umeditorcss--><linkhref="umeditor/themes/default/css/umeditor.css"rel="stylesheet"><style>.title{
te*t-align:center;}
.chat-content-container{
height:29rem;
overflow-y:scroll;
border:1p*solidsilver;}</style></head><body><!--titlestart--><divclass="title"><divclass="am-gam-g-fi*ed"><divclass="am-u-sm-12"><h1class="am-te*t-primary">ShiYanLouChat</h1></div></div></div><!--titleend--><!--chatcontentstart--><divclass="chat-content"><divclass="am-gam-g-fi*edchat-content-container"><divclass="am-u-sm-12"><ulid="message-list"class="am-ments-listam-ments-list-flip"></ul></div></div></div><!--chatcontentstart--><!--messageinputstart--><divclass="message-inputam-margin-top"><divclass="am-gam-g-fi*ed"><divclass="am-u-sm-12"><formclass="am-form"><divclass="am-form-group"><scripttype="te*t/plain"id="myEditor"style="width:100%;height:8rem;"></script></div></form></div></div><divclass="am-gam-g-fi*edam-margin-top"><divclass="am-u-sm-6"><divid="message-input-nickname"class="am-input-groupam-input-group-primary"><spanclass="am-input-group-label"><iclass="am-icon-user"></i></span><inputid="nickname"type="te*t"class="am-form-field"placeholder="Pleaseenternickname"/></div></div><divclass="am-u-sm-6"><buttonid="send"type="button"class="am-btnam-btn-primary"><iclass="am-icon-send"></i>Send
</button></div></div></div><!--messageinputend--><!--[if(gteIE9)|!(IE)]><!--><scriptsrc="assets/js/jquery.min.js"></script><!--<![endif]--><!--[iflteIE8]>
<scriptsrc="libs.baidu./jquery/1.11.1/jquery.min.js"></script>
<![endif]--><!--umeditorjs--><scriptcharset="utf-8"src="umeditor/umeditor.config.js"></script><scriptcharset="utf-8"src="umeditor/umeditor.min.js"></script><scriptsrc="umeditor/lang/zh-/zh-.js"></script><script>
$(function(){
//初始化消息输入框
varum=UM.getEditor('myEditor');
//使昵称框获取焦点
$('*nickname')[0].focus();
});
</script></body></html>编写完成之后启动Tomcat效劳器,然后localhost:8080/Chat/inde*.jsp,会看到如下界面。3.编写后台代码新建一个.shiyanlou.chat的包,在包中创立一个名为ChatServer的类,从JavaEE7开场就统一了WebSocket的API,因此无论是什么效劳器,用Java写的代码都是一样的,代码如下:package.shiyanlou.chat;
importjava.te*t.SimpleDateFormat;importjava.util.Date;
importjava*.websocket.OnClose;importjava*.websocket.OnError;importMessage;importjava*.websocket.OnOpen;importjava*.websocket.Session;importjava*.websocket.server.ServerEndpoint;
importnet.sf.json.JSONObject;
/**
*聊天效劳器类
*authorshiyanlou
*
*/ServerEndpoint("/websocket")publicclassChatServer{
privatestaticfinalSimpleDateFormatDATE_FORMAT=newSimpleDateFormat("yyyy-MM-ddHH:mm");//日期格式化OnOpenpublicvoidopen(Sessionsession){
}
/**
*承受客户端的消息,并把消息发送给所有连接的会话
*parammessage客户端发来的消息
*paramsession客户端的会话
*/OnMessagepublicvoidgetMessage(Stringmessage,Sessionsession){
JSONObjectjsonObject=JSONObject.fromObject(message);
jsonObject.put("date",DATE_FORMAT.format(newDate()));
for(SessionopenSession:session.getOpenSessions()){
jsonObject.put("isSelf",openSession.equals(session));
openSession.getAsyncRemote().sendTe*t(jsonObject.toString());
}
}
OnClosepublicvoidclose(){
}
OnErrorpublicvoiderror(Throwablet){
}
}4.前后台交互后台写完了,前台要用WebSocket连接后台,需要新建一个WebSocket对象,然后就可以和效劳器端进展交互,从浏览器发送消息给效劳器端,同时要验证输入框的内容是否为空,然后承受效劳端发送的消息,把它们动态地添加到聊天内容框中,在varum=UM.getEditor('myEditor');
$('*nickname')[0].focus();之后添加代码如下://新建WebSocket对象,最后的/websocket对应效劳器端的ServerEndpoint("/websocket")varsocket=newWebSocket('ws://${pageConte*t.request.getServerName()}:${pageConte*t.request.getServerPort()}${pageConte*t.request.conte*tPath}/websocket');
socket.onmessage=function(event){
addMessage(event.data);
};
$('*send').on('click',function(){
varnickname=$('*nickname').val();
if(!um.hasContents()){
um.focus();
$('.edui-container').addClass('am-animation-shake');
setTimeout("$('.edui-container').removeClass('am-animation-shake')",1000);
}elseif(nickname==''){
$('*nickname')[0].focus();
$('*message-input-nickname').addClass('am-animation-shake');
setTimeout("$('*message-input-nickname').removeClass('am-animation-shake')",1000);
}else{
socket.send(JSON.stringify({
content:um.getContent(),
nickname:nickname
}));
um.setContent('');
um.focus();
}
});
functionaddMessage(message){
message=JSON.parse(message);
varmessageItem='<liclass="am-ment'
+(message.isSelf?'am-ment-flip':'am-ment')
+'">'
+'<ahref="javascript:void(0)"><imgsrc="assets/images/'
+(message.isSelf?'self.png':'others.jpg')
+'"alt="class="am-ment-avatar"width="48"height="48"/></a>'
+'<divclass="
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年石化化工行业6月看好钾肥、阿洛酮糖、制冷剂、农药、生物柴油的投资方向
- 制造业供应链数字化协同管理在2025年的绿色制造与环保技术应用
- 2025年能源行业报告:碳捕获与封存技术应用前景预测与解析
- 工业互联网平台NFV在智能城市智慧旅游中的应用实践报告
- 直播电商行业主播个人品牌价值评估与市场分析报告
- 2025年音乐流媒体平台版权运营与数字音乐版权市场发展趋势与挑战分析报告
- 城市生活垃圾分类处理公众参与与社区环保活动策划研究报告
- 医疗美容行业消费者心理与服务质量改进策略深度报告
- 评课万能评课稿集合12篇
- 施工成本控制管理制度
- 中国上市银行2024年回顾及未来展望-安永-202505
- 抗肿瘤药卡铂的介绍与研究
- 《家校合作研究的国内外文献综述》2400字
- 高空作业安全试题及答案
- 江苏省南京市2022年高二《生物》下学期期末试题与参考答案
- 《国资委产权局》课件
- 中国航天新材料行业深度分析、投资前景、趋势预测报告(咨询)
- 9.2 严格执法 教案 2024-2025学年高中政治《政治与法治》(统编版必修3)
- 山东省济南市历城区2025年九年级中考语文一模考试试题(含答案)
- 2025年全国中学生数学奥林匹克竞赛(预赛)模拟卷(全国高中数学联赛一试)(含解析)
- 民兵培训课件
评论
0/150
提交评论