本文实例为大家分享了java与微信小程序实现websocket长连接的具体代码,供大家参考,具体内容如下

背景:

需要在小程序实现地图固定坐标下实时查看消息

java环境 :tomcat7 jdk1.7

1.java

websocket 类

package com.qs.util;

import java.io.bufferedreader;

import java.io.ioexception;

import java.io.inputstreamreader;

import java.io.printwriter;

import java.net.httpurlconnection;

import java.net.url;

import java.util.concurrent.copyonwritearrayset;

import javax.websocket.*;

import javax.websocket.server.serverendpoint;

import com.qs.controller.usercontroller;

/**

* @serverendpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端,

* 注解的值将被用于监听用户连接的终端访问url地址,客户端可以通过这个url来连接到websocket服务器端

*/

@serverendpoint("/websocket")

public class websockettest {

//静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。

private static int onlinecount = 0;

//concurrent包的线程安全set,用来存放每个客户端对应的mywebsocket对象。若要实现服务端与单一客户端通信的话,可以使用map来存放,其中key可以为用户标识

private static copyonwritearrayset websocketset = new copyonwritearrayset();

//与某个客户端的连接会话,需要通过它来给客户端发送数据

private session session;

/**

* 连接建立成功调用的方法

* @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据

*/

@onopen

public void onopen(session session){

this.session = session;

websocketset.add(this); //加入set中

addonlinecount(); //在线数加1

system.out.println("有新连接加入!当前在线人数为" + getonlinecount());

}

/**

* 连接关闭调用的方法

*/

@onclose

public void onclose(){

websocketset.remove(this); //从set中删除

subonlinecount(); //在线数减1

system.out.println("有一连接关闭!当前在线人数为" + getonlinecount());

}

/**

* 收到客户端消息后调用的方法

* @param message 客户端发送过来的消息

* @param session 可选的参数

*/

@onmessage

public void onmessage(string message, session session) {

system.out.println("来自客户端的消息:" + message);

//群发消息

for(websockettest item: websocketset){

try {

item.sendmessage(message);

} catch (ioexception e) {

e.printstacktrace();

continue;

}

}

}

/**

* 发生错误时调用

* @param session

* @param error

*/

@onerror

public void onerror(session session, throwable error){

system.out.println("发生错误");

error.printstacktrace();

}

/**

* 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。

* @param message

* @throws ioexception

*/

public void sendmessage(string message) throws ioexception{

this.session.getbasicremote().sendtext(message);

//this.session.getasyncremote().sendtext(message);

}

public static synchronized int getonlinecount() {

return onlinecount;

}

public static synchronized void addonlinecount() {

websockettest.onlinecount++;

}

public static synchronized void subonlinecount() {

websockettest.onlinecount--;

}

}

2. jsp

java后端websocket的tomcat实现

welcome

发送消息


关闭websocket连接


var websocket = null;

//判断当前浏览器是否支持websocket

if ('websocket' in window) {

websocket = new websocket("ws://image.aropen.com/image-retrievals/websocket");

}

else {

alert('当前浏览器 not support websocket')

}

//连接发生错误的回调方法

websocket.onerror = function () {

setmessageinnerhtml("websocket连接发生错误");

};

//连接成功建立的回调方法

websocket.onopen = function () {

setmessageinnerhtml("websocket连接成功");

}

//接收到消息的回调方法

websocket.onmessage = function (event) {

setmessageinnerhtml(event.data);

}

//连接关闭的回调方法

websocket.onclose = function () {

setmessageinnerhtml("websocket连接关闭");

}

//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。

window.onbeforeunload = function () {

closewebsocket();

}

//将消息显示在网页上

function setmessageinnerhtml(innerhtml) {

document.getelementbyid('message').innerhtml += innerhtml + '
';

}

//关闭websocket连接

function closewebsocket() {

websocket.close();

}

//发送消息

function send() {

var message = document.getelementbyid('text').value;

var arr=['zhangsan,hello,1','lisi,word,1','wangwu,hi,1','zhaoliu,hehe,1','tianqi,haha,1'];

window.setinterval(function(){

websocket.send(arr[math.floor(math.random()*4)]);

},5000);

//websocket.send(message);

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

java与微信小程序通讯_java与微信小程序实现websocket长连接相关推荐

  1. 微信是与服务器长连接,java与微信小程序实现websocket长连接.pdf

    java与与微微信信小小程程序序实实现现websocket长长连连接接 本文实例为大家分享了j ava与微信小程序实现websocket长连接的具体代码,供大家参考,具体内容 下 背背景景:: 需要在 ...

  2. java nio socket长连接_netty学习实战—实现websocket长连接和socket之间进程通信

    netty学习-实现websocket长连接和socket之间通信 最近正在学习netty,跟着教程写了一个基于WebSocket的网页聊天室,对netty有了一定的了解,现在正好项目使用到长连接,选 ...

  3. 基于Java和Socket实现局域网通讯的简易微信设计

    资源下载地址:https://download.csdn.net/download/sheziqiong/85947114 资源下载地址:https://download.csdn.net/downl ...

  4. java 微信多线程推送_Java实现 微信小程序 + 消息推送

    实现效果: 下面要显示五个字段 接下来,参照官方文档,一步步实现: 一.官方给出请求示例.返回示例 二.根据上面编写实体类 (1)请求参数 @Data public class SendTemplat ...

  5. Java接口四个类四则运算_java 实现四则运算小程序

    题目地址:http://www.cnblogs.com/HQL0301/p/7502315.html 1.需求分析: (1) 按照用户输入来控制题目生成个数以及随机数的值域: (2)生成题目与答案的T ...

  6. java微信支付异步通知_Java中微信支付退款异步通知解码

    微信所有的支付结果都是加密处理的,他和订单支付成功的异步通知不一样. 他的基本返回是: SUCCESS 我们需要对req_info解码才能看到退款的明文 解码后会得到明文: 解密步骤如下: (1)对加 ...

  7. java实现红包要多少钱_java实现微信红包分配算法

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 java 实现微信红包分配算法 2017/03/25 0 红包算法分析有人认为,抢红包的额度是从 0.01 到剩余平均值 *N(N 是一个系数,决 ...

  8. java 支付结果主动通知商户_java实现微信支付结果通知

    支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答. 对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽 ...

  9. java怎么实现查找n功能_java 实现微信搜索附近人功能

    最近给andorid做后台查询数据功能,有一个需求是模仿微信的查找附近人功能. 数据库中存储每个用户的经纬度信息及用户信息,通过当前用户传递过来的经纬度查询这个用户半径N公里以内的用户信息. 数据库表 ...

最新文章

  1. CMakeLists.txt从入门到精通
  2. linux jemalloc 内存分配器 安装与使用
  3. 【1】万魂杀MMORPG研发回顾
  4. golang中如何抓取panic让程序正常退出
  5. [JZOJ5426]摘Galo
  6. win10系统excel2019单元格显示完整的年月日时分秒设置方法
  7. [css] 使用rem布局时怎样合理设置根标签字体大小?
  8. 微信今日全面开放接口
  9. Java-虚拟机-执行引擎/解释器/编译
  10. 离开APM的弹性云还是真弹性吗
  11. win11窗口拖动卡顿怎么办 Windows11窗口拖动卡顿的解决方法
  12. 广义注意力- saliency map 关注图、gaze、Att
  13. python爬虫微信公众号文章_Python爬虫案例:爬取微信公众号文章
  14. IT工程项目需求获取的主要方法
  15. 上海电力大学计算机专业全国排名,上海电力大学有哪些专业 上海电力大学专业排名...
  16. python爬虫入门——13行代码制作英语翻译器教程,小白入门一点通
  17. 图论中的聚类系数(Clustering coefficient)简单介绍
  18. 外媒:日本频繁举办黑客大赛,还邀请美俄相关专家坐阵
  19. 通过LRC文件分析出一首歌曲的速度
  20. python4.30每周一练

热门文章

  1. Oracle例外处理
  2. python supervisor 日志_Supervisor使用详解
  3. 用友服务器显示禁用,包头用友 U6 运行时提示端口4630 被禁用 或者 1433端口不通...
  4. mysql 设置时区_MySQL实战干货 | 如何处理由时区设置引发的 SQL 执行“卡顿”?...
  5. mysql插入日期_初识MySQL
  6. android电容触摸屏的驱动及其上层工作原理,android 电容屏(一):电容屏基本原理篇...
  7. oracle11查看dblink,配置oracle11g通过dblink+透明网关访问GBase
  8. opencv threshold_OpenCV-Python 立体图像的深度图 | 五十二
  9. seo代码优化工具_企业seo该怎么优化
  10. micropython中文社区-micropython支持中文啦!