序: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即时通信相关推荐

  1. java SSM 框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码

    A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生 ...

  2. java 进销存 crm websocket即时聊天发图片文字 好友群组 SSM源码

    系统介绍: 1.系统采用主流的 SSM 框架 jsp JSTL bootstrap html5 (PC浏览器使用) 2.springmvc +spring4.3.7+ mybaits3.3 SSM 普 ...

  3. java crm 进销存 websocket即时聊天发图片文字 好友群组 SSM源码

    博文来源:http://www.fhadmin.org/webnewsdetail4.html 系统介绍: 1.系统采用主流的 SSM 框架 jsp JSTL bootstrap html5 (PC浏 ...

  4. java代码编辑器 pdf文件预览 主流SSM 代码生成器 shrio redis websocket即时通讯

    获取[下载地址] QQ: 313596790 官网 http://www.fhadmin.org/ A 代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码 B 集成代码生成器 [ ...

  5. java websocket即时通讯+layui实现移动端一对一聊天客服功能

    效果图 java代码 package com.websocket;import java.io.IOException;import java.util.concurrent.ConcurrentHa ...

  6. java 及时通讯弹幕技术 视频播放 websocket SSM 集成代码生成器 源码

    获取[下载地址] QQ: 313596790 官网 http://www.fhadmin.org/ A 代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码 B 集成代码生成器 [ ...

  7. Java接入微信支付超级详细教程——从入门到精通

    源码下载 源码获取邮箱:xiaoshu1024@qq.com 本文介绍了"二维码付款"的代码.其他微信支付方式的代码都在源码中. 一.准备开发所需的账号以及配置信息 解释:想要接入 ...

  8. java web 发送消息_java集成WebSocket向指定用户发送消息

    一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通 ...

  9. java SSM 框架 多数据源 代码生成器 websocket

    获取[下载地址]     [免费支持更新] 三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握 ...

最新文章

  1. [na]出口选路pbr小实验视频
  2. SQL四种语言:DDL,DML,DCL,TCL
  3. c51 嵌入汇编语言,在C51中嵌入汇编
  4. 表单中enctype=multipart/form-data的意思
  5. 浙江大学公共管理学院与阿里云计算有限公司达成合作 | 凌云时刻
  6. express中 routes/index.js
  7. 低维空间到高维空间的映射
  8. 循环队列以数组Q【0,...,m-1】存储结构,rear表示循环队列中的队尾元素的实际位置,移动按rear=(rear+1)/MODm,length表示当前循环队列中的元素个数,循环队列队首实际位置。
  9. access是用来干什么的_access是干什么用的
  10. IDEA启动tomcat找不到应用程序(localhost:8080)
  11. 如何快速为视频添加ai字幕的解决方案
  12. 【D3.js数据可视化系列教程】(三十六)-- 冰柱图
  13. Bboss Elasticsearch 简单用法(ES 7.*)
  14. STM32的中断优先级说明(抢占式与响应式优先级)
  15. [转载]WIFI Direct/WIFI P2P
  16. 关于屏幕尺寸引起的问题
  17. 后台执行PHP 脚本
  18. Kettle(二):连接SQL Server数据库
  19. IIC16bit数据读
  20. 《系统相关》双系统安装(Windows+Ubuntu)

热门文章

  1. 测径仪系统全新升级解决线材的量径问题
  2. 西安电子科技大学-电磁场与电磁波大作业-生活中的电磁场与电磁波
  3. 清华大学首个原创虚拟学生!“华智冰”入学清华!
  4. 和谐敏感词(百度2017秋招真题)
  5. 【如何成为学习高手】学习是有方法的,按照正确的方法练习,每个人都可以成为学霸
  6. 发布Android应用程序过程
  7. 【链环科技】智能硬件APP开发——通过硬件对接,实现软件与硬件设备的完美结合
  8. webservice 调用国内航班,天气预报 等外部接口
  9. popcap资源管理
  10. spring boot实现的房屋租赁管理系统mysql