首先websocket后台需要在web服务器运行,所以先搭建一个web项目。websocket需要依赖其他的jar包,引入依赖

javaxjavaee-api7.0provided

新建一个类,该类建立一个服务端点 ServerEndpoint

importjavax.websocket.*;importjavax.websocket.server.PathParam;importjavax.websocket.server.ServerEndpoint;importjava.io.IOException;importjava.util.concurrent.ConcurrentHashMap;

/***@authorRice*@create2020/06/24 15:56*/@ServerEndpoint("/ws/{sid}")

public classWSServer {

privateSession session;private staticConcurrentHashMap ss= newConcurrentHashMap();private intoln;

@OnOpenpublic voidonOpen(Session session,@PathParam("sid") String sid){

oln++;this.session= session;ss.put(sid,session);}

@OnMessagepublic voidonMessage(String message ,Session session,@PathParam("sid") String sid ) throwsIOException {

Msg msg = Msg.getInstance(message);msg.setUser(sid);if(msg.getTid()==1){

privateChat(msg);return ;}

}

@OnClosepublic voidonClose(@PathParam("sid") String sid){

oln--;ss.remove(sid);}

@OnErrorpublic voidonError(Session session ,Throwable error){

System.out.println(error);}

private voidprivateChat(Msg msg) throwsIOException {

if(ss.containsKey(msg.getTsid())){

Session ts = ss.get(msg.getTsid());ts.getBasicRemote().sendText(Msg.forwordMSg(msg));}else{

this.session.getBasicRemote().sendText("对方不在线");}

}

}

前端(客户端点):

ws = new WebSocket("ws://localhost:8080/wws/ws/"+_this.luser)

ws.onmessage=function(event){

let rm = JSON.parse(event.data);

if(!_this.msgs[rm.user]){

_this.$set(_this.msgs,rm.user,new Array());

}

_this.msgs[rm.user].push(rm.user+": "+rm.msg);

}

当客户端点调用new Websocket时,会发起和服务端的连接。当websocekt的readystate变为1时,会触发后端onopen事件,此时一般会将建立连接的session加入到管理的Map中,记录session的名字和session.以此方便进行消息的转发。

当客户端readystate=1(连接成功),客户端可以进行发消息,关闭连接。当客户端调用websocket.send(String msg),后台会触发onMessage方法并且把消息以及发消息的session传入到该方法中进行处理。通常客户端发送的消息需要自行规定数据报格式,如JSON,给后台进行解析。

客户端点同样的需要进行onmessage方法的处理,当服务端往客户端session发送消息,同样会触发客户端的onmessage方法。以此达到即时沟通

java js websocket_js+java websocket记录相关推荐

  1. js双通信java,js和java的http通信

    可查看基于ajax的前后端多种数据交互: js 发送text & 接收 text js部分 var xmlhttp; function callback() { if (xmlhttp.rea ...

  2. java js highcharts_highcharts java饼图

    自学highcharts饼图,springMVC框架,后台java,mysql数据库,官网下载Highcharts,留待以后备用 jsp页面代码: String path = request.getC ...

  3. java js websocket_java js实现Websocket通讯实例

    本文主要介绍如何使用java实现websocket server,以及使用java.js生成websocket client进行通讯交互 1.java所需jar包 javax.websocket ja ...

  4. JS、Java、C 依然强势,Go、Kotlin、Python 成为潜力股,2020 开发者生态系统报告揭晓!...

    编译 | 屠敏 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 一切过往,皆为序章. 2019 年,走出舒适区的技术圈迎来消费互联网向产业互联网的转型,也开始了数字 ...

  5. jsencrypt.js加密java后端解密

    文章目录 1.什么是RSA? 2.RSA算法 2.1 生成公钥和私钥 2.2 使用公钥加密信息 2.3 使用私钥解密信息 4.RSA的应用:数字签名 5.RSA的安全性 6.为什么要写这文章? 7.前 ...

  6. js编码java解码_常用的js、java编码解码方法

    前言 前后端直接传输数据进行交互不就行了吗,为什么还要进行编码解码?正常情况下直接交互没问题,但当有类似以下情况出现时就需要进行编码再进行传输: 1.编码格式难以统一,导致数据交互过程出现中文乱码等问 ...

  7. java js 速度慢,java js 速度慢jQuery常用知识点总结以及平时封装常用函数

    本文为大家介绍了jQuery中常用知识点及函数,包含许多细节方面的知识,下面我们一起学习一下. jQuery中为我们提供了很多有用的属性,自己总结的一些常用的函数.个人认为在在线排盘开发中会比较常用的 ...

  8. js编码java解码_js编码处理(转)

    1.使用 JS中的 encodeURIComponent或 encodeURI方法. 说明: encodeURIComponent(String) 对传递参数进行设置.不编码字符有 71个: !, ' ...

  9. 程序员看过来!JS、Java、C 依然强势,Go、Kotlin、Python 潜力股,2020 开发者生态系统报告

    编译 | 屠敏 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 一切过往,皆为序章. 2019 年,走出舒适区的技术圈迎来消费互联网向产业互联网的转型,也开始了数字 ...

最新文章

  1. 转帖: eureka vs consul以及其他的一些比较
  2. 代码开源!激光雷达 SLAM 的闭环检测:OverlapNet
  3. Android源码开发笔记 -- Android数据库,屏幕休眠时间
  4. python中requests的常用方法_python3 Requests常用操作
  5. linux db2 ssl,IBM DB2 Content Manager V83与手工配置SSL
  6. Leetcode 17 - Letter Combinations of a Phone Number
  7. php 请求java_怎么php发送get请求给Java,然后返回想要的具体参数
  8. Apache Kafka简介与安装(一)
  9. 数据库原理及应用教程 第四版|微课版答案 陈志泊主编
  10. c语言小车程序,循迹小车程序C语言
  11. 快播创始人王欣成立人工智能公司
  12. 原型设计工具Pencil的使用
  13. 新一配:iTunes的历史版本【转载】
  14. 正样本/反(负)样本/易区分样本/难区分样本
  15. 趋势科技预测 2017物联网装置将担任重要攻击角色
  16. R语言:Windows字体数据库里没有这样的字体
  17. 开源四轴飞行器CC3D的稳定模式和PID算法简介
  18. TimestampUtil时间处理工具类
  19. Unity 2D 混合树小例子
  20. 本轮沙尘已跨过长江!这些地区请注意加强防范

热门文章

  1. c/c++如何获取数组的长度
  2. CentOS7安装Python3.4 ,让Python2和3共存
  3. Datagridview拖放数据到TreeView
  4. PHP源码安装及配置——以fastCGI的方式与httpd整合
  5. Java调用.NET webservice方法的几种方式
  6. 十二之续、快速排序算法的深入分析
  7. oracle入库的速度能到多少_倒车入库别练复杂了,其实就这两点
  8. JQuery 绑定select标签的onchange事件
  9. [转载] java中关于用\t格式输出
  10. sql server修改字段编码格式_关于MySQL如何修改character_set_client的编码问题