java接入小米,小米粥 java实现WebSocket即时通信
序:JSR 356:Java API for WebSocket是javaee7新推出来的一个新的特性,他相对于其它容器实现,优点是他是一个标准.容器的更新都会遵守这个标准.不需要更改代码.减少后期的维护工作量.webscoket主要的作用是用来双向即时通信.对比传统的实现可以减少很多不必要的开销.但是对IE浏览器的支持就不太好了.所以如果客户群主要是IE而且是低版本的.使用该技术就要慎重了.
参考资料:
对浏览器的支持情况:
了解以上信息过后准备开始实现一个WEBSOCKET的DEMO.
准备工具:
tomcat7+
jdk7+ (webscoket是javaee7的新特性,所以必须版本是7及以上.)
创建工程:
创建一个名为webscoket的工程.
java文件如下:
01package org.temp;
02
03import java.io.IOException;
04import java.util.Hashtable;
05import java.util.Map;
06import java.util.Set;
07import java.util.logging.Logger;
08
09import javax.websocket.CloseReason;
10import javax.websocket.CloseReason.CloseCodes;
11import javax.websocket.OnClose;
12import javax.websocket.OnError;
13import javax.websocket.OnMessage;
14import javax.websocket.OnOpen;
15import javax.websocket.RemoteEndpoint;
16import javax.websocket.Session;
17import javax.websocket.server.PathParam;
18import javax.websocket.server.ServerEndpoint;
19//注意此访问地址格式如:"ws://"+ window.location.host+"/${pageContext.request.contextPath}/game"是ws开头的,而不是以http:开头的.
20@ServerEndpoint(value ="/game")
21public class Scoket {
22
23private Logger logger = Logger.getLogger(this.getClass().getName());
24
25static Map sessionMap =new Hashtable();
26
27@OnOpen
28public void onOpen(Session session) {
29sessionMap.put(session.getId(), session);
30}
31
32@OnMessage
33public void onMessage(String unscrambledWord, Session session) {
34broadcastAll("message",unscrambledWord);
35}
36/**
37* 广播给所有人
38* @param message
39*/
40public static void broadcastAll(String type,String message){
41Set> set = sessionMap.entrySet();
42for(Map.Entry i: set){
43try {
44i.getValue().getBasicRemote().sendText("{type:'"+type+"',text:'"+message+"'}");
45}catch (Exception e) {
46e.printStackTrace();
47}
48}
49}
50
51@OnClose
52public void onClose(Session session, CloseReason closeReason) {
53sessionMap.remove(session.getId());
54logger.info(String.format("Session %s closed because of %s", session.getId(), closeReason));
55}
56
57@OnError
58public void error(Session session, java.lang.Throwable throwable){
59sessionMap.remove(session.getId());
60System.err.println("session "+session.getId()+" error:"+throwable);
61}
62}
创建一个注解为:@ServerEndpoint的webscoket的服务端.供前台访问.因为想实现点其它功能.所以在广播给所有人这个方法里边加上了type以备区分
注解说明图:
接下来是jsp页面.直接上代码..
01
02pageEncoding="UTF-8"%>
03html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
04
05
06
07
Insert title here
09
10var socket =null;
11$(function(){
12function parseObj(strData){//转换对象
13return (new Function( "return " + strData ))();
14};
15//创建socket对象
16socket = new WebSocket("ws://"+ window.location.host+"/${pageContext.request.contextPath}/game");
17//连接创建后调用
18socket.onopen = function() {
19$("#showMsg").append("连接成功...
");
20};
21//接收到服务器消息后调用
22socket.onmessage = function(message) {
23var data=parseObj(message.data);
24if(data.type=="message"){
25$("#showMsg").append(""+data.text+"");
26}else if(data.type=="background"){
27$("#showMsg").append("系统改变背景地址,背景地址是:"+data.text+"");
28$("body").css("background","url("+data.text+")");
29}
30};
31//关闭连接的时候调用
32socket.onclose = function(){
33alert("close");
34};
35//出错时调用
36socket.onerror = function() {
37alert("error");
38};
39$("#sendButton").click(function() {
40socket.send($("#msg").val());
41});
42$("#abcde").click(function(){
43$.post("${pageContext.request.contextPath}/backgroundimg");
44});
45});
46
47
48
49
50
51
52
53
54
55
56
基本上就可以简单的实现了多人聊天功能了.或者集体换背景图片功能.
自己感兴趣的可以根据实际业务需求做一定的扩展.
等工作空下来会做进一步的进阶.再发文章出来.
java接入小米,小米粥 java实现WebSocket即时通信相关推荐
- java SSM 框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码
A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生 ...
- java 进销存 crm websocket即时聊天发图片文字 好友群组 SSM源码
系统介绍: 1.系统采用主流的 SSM 框架 jsp JSTL bootstrap html5 (PC浏览器使用) 2.springmvc +spring4.3.7+ mybaits3.3 SSM 普 ...
- java crm 进销存 websocket即时聊天发图片文字 好友群组 SSM源码
博文来源:http://www.fhadmin.org/webnewsdetail4.html 系统介绍: 1.系统采用主流的 SSM 框架 jsp JSTL bootstrap html5 (PC浏 ...
- java代码编辑器 pdf文件预览 主流SSM 代码生成器 shrio redis websocket即时通讯
获取[下载地址] QQ: 313596790 官网 http://www.fhadmin.org/ A 代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码 B 集成代码生成器 [ ...
- java websocket即时通讯+layui实现移动端一对一聊天客服功能
效果图 java代码 package com.websocket;import java.io.IOException;import java.util.concurrent.ConcurrentHa ...
- java 及时通讯弹幕技术 视频播放 websocket SSM 集成代码生成器 源码
获取[下载地址] QQ: 313596790 官网 http://www.fhadmin.org/ A 代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码 B 集成代码生成器 [ ...
- Java接入微信支付超级详细教程——从入门到精通
源码下载 源码获取邮箱:xiaoshu1024@qq.com 本文介绍了"二维码付款"的代码.其他微信支付方式的代码都在源码中. 一.准备开发所需的账号以及配置信息 解释:想要接入 ...
- java web 发送消息_java集成WebSocket向指定用户发送消息
一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通 ...
- java SSM 框架 多数据源 代码生成器 websocket
获取[下载地址] [免费支持更新] 三大数据库 mysql oracle sqlsever 更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握 ...
最新文章
- [na]出口选路pbr小实验视频
- SQL四种语言:DDL,DML,DCL,TCL
- c51 嵌入汇编语言,在C51中嵌入汇编
- 表单中enctype=multipart/form-data的意思
- 浙江大学公共管理学院与阿里云计算有限公司达成合作 | 凌云时刻
- express中 routes/index.js
- 低维空间到高维空间的映射
- 循环队列以数组Q【0,...,m-1】存储结构,rear表示循环队列中的队尾元素的实际位置,移动按rear=(rear+1)/MODm,length表示当前循环队列中的元素个数,循环队列队首实际位置。
- access是用来干什么的_access是干什么用的
- IDEA启动tomcat找不到应用程序(localhost:8080)
- 如何快速为视频添加ai字幕的解决方案
- 【D3.js数据可视化系列教程】(三十六)-- 冰柱图
- Bboss Elasticsearch 简单用法(ES 7.*)
- STM32的中断优先级说明(抢占式与响应式优先级)
- [转载]WIFI Direct/WIFI P2P
- 关于屏幕尺寸引起的问题
- 后台执行PHP 脚本
- Kettle(二):连接SQL Server数据库
- IIC16bit数据读
- 《系统相关》双系统安装(Windows+Ubuntu)