1. vue代码

methods: {

//在方法里调用 this.websocketsend()发送数据给服务器

onConfirm () {

//需要传输的数据

let data = {

code: 1,

item: ‘传输的数据'

}

this.websocketsend(JSON.stringify(data))

},

/*

*/

initWebSocket () { // 初始化weosocket

let userinfo = getUserInfo()

let username = userinfo.waiter_userid

this.websock = new WebSocket('ws://' + baseURL + '/websocket/' + username)

this.websock.onmessage = this.websocketonmessage

this.websock.onerror = this.websocketonerror

this.websock.onopen = this.websocketonopen

this.websock.onclose = this.websocketclose

},

websocketonopen () { // 连接建立之后执行send方法发送数据

let data = {

code: 0,

msg: '这是client:初次连接'

}

this.websocketsend(JSON.stringify(data))

},

websocketonerror () {

console.log( 'WebSocket连接失败')

},

websocketonmessage (e) { // 数据接收

console.log('数据接收' + e.data)

},

websocketsend (Data) { // 数据发送

this.websock.send(Data)

},

websocketclose (e) { // 关闭

console.log('已关闭连接', e)

}

},

created () {

console.log('created')

this.initWebSocket()

},

data () {

return {

websocket: null

}

},

destroyed () {

this.websock.close() // 离开路由之后断开websocket连接

}

2. java代码

项目引入tomcat安装目录里的两个依赖包

package diancan.servlet;

import java.io.IOException;

import java.util.Map;

import java.util.concurrent.ConcurrentHashMap;

import javax.websocket.OnClose;

import javax.websocket.OnError;

import javax.websocket.OnMessage;

import javax.websocket.OnOpen;

import javax.websocket.Session;

import javax.websocket.server.PathParam;

import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/websocket/{username}")

public class WebSocket {

private static int onlineCount = 0;

private static Map clients = new ConcurrentHashMap();

private Session session;

private String username;

@OnOpen

public void onOpen(@PathParam("username") String username, Session session) throws IOException {

this.username = username;

this.session = session;

addOnlineCount();

clients.put(username, this);

System.out.println("已连接" + username);

}

@OnClose

public void onClose() throws IOException {

clients.remove(username);

subOnlineCount();

}

@OnMessage

public void onMessage(String message) throws IOException {

DataWrapper res = new DataWrapper();

System.out.println("message:" + message);

JSONObject req = JSONObject.parseObject(message);

// System.out.println("item:" + req.getJSONObject("item"));

// System.out.println("item:" + req.getInteger("code"));

// 发送数据给服务端

sendMessageAll(JSON.toJSONString(res));

}

@OnError

public void onError(Session session, Throwable error) {

error.printStackTrace();

}

public void sendMessageTo(String message, String To) throws IOException {

// session.getBasicRemote().sendText(message);

// session.getAsyncRemote().sendText(message);

for (WebSocket item : clients.values()) {

if (item.username.equals(To))

item.session.getAsyncRemote().sendText(message);

}

}

public void sendMessageAll(String message) throws IOException {

for (WebSocket item : clients.values()) {

item.session.getAsyncRemote().sendText(message);

}

}

public static synchronized int getOnlineCount() {

return onlineCount;

}

public static synchronized void addOnlineCount() {

WebSocket.onlineCount++;

}

public static synchronized void subOnlineCount() {

WebSocket.onlineCount--;

}

public static synchronized Map getClients() {

return clients;

}

}

在项目别的类可通过new WebSocket()向客户端发送数据

WebSocket ws = new WebSocket();

ws.sendMessageAll(JSON.toJSONString(rs));

以上这篇Vue+Java 通过websocket实现服务器与客户端双向通信操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

java getbasicremote_Vue+Java 通过websocket实现服务器与客户端双向通信操作相关推荐

  1. java 网页通讯_Vue+Java 通过websocket实现服务器与客户端双向通信操作

    1. vue代码 methods: { //在方法里调用 this.websocketsend()发送数据给服务器 onConfirm () { //需要传输的数据 let data = { code ...

  2. Java服务器与客户端传文件,java实现上传文件到服务器和客户端.pdf

    java实实现现上上传传文文件件到到服服务务器器和和客客户户端端 这篇文章主要为大家详细介绍了java实现上传文件到服务器和客户端,具有一定的参考价值,感兴趣的小伙伴们 以参考一下 JAVA编写一个 ...

  3. Java实现即时聊天:聊天服务器+聊天客户端+Web管理控制台

    来源:cnblogs.com/blogtimes/p/14767484.html 一.前言 说实话,写这个玩意儿是我上周刚刚产生的想法,本想写完后把代码挂上来赚点积分也不错.写完后发现这东西值得写一篇 ...

  4. [Jetty]基于Java Servlet的支持WebSocket的服务器

    1. JDK安装 www.java.com/zh/download 2. Jetty下载与安装 download.eclipse.org/jetty,下载稳定版,解压到目标路径 2.1 启动Jetty ...

  5. java实现简易聊天窗口先运行服务器还是客户端_一个简易聊天功能的服务器端和客户端源码...

    学习完J2SE可以写一个简易的聊天软件来让刚学的知识融会贯通,代码注释的很详细哦! 开发版本历程: V0.1:客户端实现一个界面 V0.2:客户端界面有输入框和显示框的界面 V0.3:客户端关闭按钮可 ...

  6. C# SuperSocket 手把手教你入门 傻瓜教程---3(Telnet服务器和客户端请求处理)

    C# SuperSocket 手把手教你入门 傻瓜教程系列教程 C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据) C# SuperSocket 手把手教你 ...

  7. 基于Tomcat7、Java、WebSocket的服务器推送聊天室

    2019独角兽企业重金招聘Python工程师标准>>> 基于Tomcat7.Java.WebSocket的服务器推送聊天室 转载于:https://my.oschina.net/u/ ...

  8. JAVA EE Eclipse下配置Tomcat服务器

    在进行Java web编程之前,必须要进行web服务器的配置,这里选择在Java EE(版本) Eclipse中进行服务器的配置.当然了,在安装Java EE Eclipse之前要先安装JDK,并且要 ...

  9. 【Java 网络编程】UDP 服务器 与 客户端持续交互 案例

    文章目录 I UDP 交互原理 II UDP 服务器端代码示例 III UDP 客户端代码示例 IV 服务器 客户端 运行结果 I UDP 交互原理 1. UDP 单播传输流程 : A 给 B 发送数 ...

最新文章

  1. 【c语言】蓝桥杯算法提高 P0402
  2. ASP.NET MVC4简单使用ELMAH记录系统日志
  3. C语言do...while语句的妙用(包裹宏替换多句代码)(代替go to语法)(隔绝外部变量)
  4. php SqlServer 中文汉字乱码
  5. ROS2学习(五).ROS概念 - ROS_DOMAIN_ID
  6. 【12c】OCP 062近期新出现的考试原题-第28题
  7. 获取整数的最大值最小值
  8. 使用_thread多线程模块ping主机代码
  9. 从贝叶斯方法谈到贝叶斯网络
  10. 惠普打印机双击之后没有扫描_安装hp laserjet m1005 mfp打印机驱动后,双击我的电脑里怎么没有扫描图标呢??...
  11. Unity | 安卓 读取和写入TXT文本操作
  12. 如何通过芯片手册寻找操作GPIO
  13. BDTC 2016 出品人阵容曝光!附首批邀请嘉宾名单
  14. CentOS7自动发送邮件配置
  15. python中sys.stdout和sys.stderr
  16. win10下ipv6安装与设置
  17. HBU-NNDL 实验五 前馈神经网络(3)鸢尾花分类
  18. 专用播放器到底是些什么东西?
  19. Python给手机发通知
  20. rmmod: can't change directory to '/lib/modules': No such file or directory

热门文章

  1. 鸿蒙系统2019发布会,直击丨2019华为开发者大会 “鸿蒙”系统今日正式发布!...
  2. python爬虫什么书好_初学python爬虫看什么书
  3. C语言引用文件空格和换行,关于文件操作,碰到空格就换行
  4. 字符b是多少java_Java学习,对比字符串:比较字符串 a 和字符 b 是否完全一致,长度,内容等完全一致...
  5. 怎样把php文件改成固定大小,php修改上传文件大小限制的方法
  6. 时间序列交叉验证TimeSeriesSplit
  7. vim技巧之删除引号之间的的快捷键
  8. mysql 商业版备份_MySQL企业版备份工具MEB
  9. 连接端口 配置hive_Hadoop大数据平台数据仓库Hive管理操作
  10. python官网下载哪个版本好玩_Python官网不同版本的下载