微信小程序+java后端整合笔记

简介: 用到的工具和技术. 1.微信web开发工具小程序版 2.Myeclipse 2014 3.WebSocket 4.Maven 3.3.9 5.Tomcat 7 步骤 1.安装配置Maven,使用Myeclipse创建web project 使用Maven项目结构.

用到的工具和技术.

1.微信web开发工具小程序版

2.Myeclipse 2014

3.WebSocket

4.Maven 3.3.9

5.Tomcat 7

步骤

   1.安装配置Maven,使用Myeclipse创建web project 使用Maven项目结构. 具体步骤:点击打开链接

   2.打开微信web开发工具,由于是内部开发测试,故不要填写 appID, 创建新项目,把项目放在Maven项目目录下  src/main/webapp/项目名

   3.创建Websocket 实现握手通信.

以下代码均来自网络资料.

java服务器端:

 

[javascript] view plain copy
  1. package websocketTest;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.concurrent.CopyOnWriteArraySet;  
  5.   
  6. import javax.websocket.*;  
  7. import javax.websocket.server.ServerEndpoint;  
  8.   
  9. /** 
  10.  * @ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端, 
  11.  * 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端 
  12.  */  
  13. @ServerEndpoint("/websocket")  
  14. public class TestWebSocket {  
  15.     //静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。  
  16.     private static int onlineCount = 0;  
  17.   
  18.     //concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识  
  19.     private static CopyOnWriteArraySet<TestWebSocket> webSocketSet = new CopyOnWriteArraySet<TestWebSocket>();  
  20.   
  21.     //与某个客户端的连接会话,需要通过它来给客户端发送数据  
  22.     private Session session;  
  23.   
  24.     /** 
  25.      * 连接建立成功调用的方法 
  26.      * @param session  可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据 
  27.      */  
  28.     @OnOpen  
  29.     public void onOpen(Session session){  
  30.         this.session = session;  
  31.         webSocketSet.add(this);     //加入set中  
  32.         addOnlineCount();           //在线数加1  
  33.         System.out.println("有新连接加入!当前在线人数为" + getOnlineCount());  
  34.     }  
  35.   
  36.     /** 
  37.      * 连接关闭调用的方法 
  38.      */  
  39.     @OnClose  
  40.     public void onClose(){  
  41.         webSocketSet.remove(this);  //从set中删除  
  42.         subOnlineCount();           //在线数减1  
  43.         System.out.println("有一连接关闭!当前在线人数为" + getOnlineCount());  
  44.     }  
  45.   
  46.     /** 
  47.      * 收到客户端消息后调用的方法 
  48.      * @param message 客户端发送过来的消息 
  49.      * @param session 可选的参数 
  50.      */  
  51.     @OnMessage  
  52.     public void onMessage(String message, Session session) {  
  53.         System.out.println("来自客户端的消息:" + message);  
  54.         //群发消息  
  55.         for(TestWebSocket item: webSocketSet){  
  56.             try {  
  57.                 item.sendMessage(message);  
  58.             } catch (IOException e) {  
  59.                 e.printStackTrace();  
  60.                 continue;  
  61.             }  
  62.         }  
  63.     }  
  64.   
  65.     /** 
  66.      * 发生错误时调用 
  67.      * @param session 
  68.      * @param error 
  69.      */  
  70.     @OnError  
  71.     public void onError(Session session, Throwable error){  
  72.         System.out.println("发生错误");  
  73.         error.printStackTrace();  
  74.     }  
  75.   
  76.     /** 
  77.      * 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。 
  78.      * @param message 
  79.      * @throws IOException 
  80.      */  
  81.     public void sendMessage(String message) throws IOException{  
  82.         this.session.getBasicRemote().sendText(message);  
  83.         //this.session.getAsyncRemote().sendText(message);  
  84.     }  
  85.   
  86.     public static synchronized int getOnlineCount() {  
  87.         return onlineCount;  
  88.     }  
  89.   
  90.     public static synchronized void addOnlineCount() {  
  91.         TestWebSocket.onlineCount++;  
  92.     }  
  93.   
  94.     public static synchronized void subOnlineCount() {  
  95.         TestWebSocket.onlineCount--;  
  96.     }  
  97. }  
[javascript] view plain copy
  1. 微信小程序客户端:  
[javascript] view plain copy
  1.   <pre name="code" class="javascript">var app = getApp()  
  2. Page({  
  3.   onLoad:function(){  
  4.   
  5.     wx.connectSocket({  
  6.       url: "ws://localhost:8080/TestYMG/websocket",  
  7.     })  
  8.     wx.onSocketOpen(function() {  
  9.       console.log('WebSocket连接已经打开!')  
  10.     wx.sendSocketMessage({  
  11.       data: 'HELLO,WORLD'+Math.random()*0XFFFFFF.toString()  
  12.     })  
  13.     });  
  14.    wx.onSocketMessage(function(data) {  
  15.      console.log(data);  
  16.    });</pre><pre name="code" class="javascript">     //监听是否关闭  
  17.    wx.onSocketClose(function() {  
  18.      console.log('WebSocket连接已经关闭!')  
  19.    });  
  20.   },</pre><pre name="code" class="javascript">    //手动关闭连接  
  21.   setclose:function(e){  
  22.     console.log('WebSocket连接正在关闭!')  
  23.     wx.closeSocket();  
  24.   
  25.   }  
  26.   
  27.     
  28. })  
  29. </pre><br>  
  30. <p></p>  
  31. <pre></pre>  
  32. <p></p>  
  33.                       
原文地址http://www.bieryun.com/671.html
相关文章
|
2月前
|
小程序 JavaScript Java
微信小程序的后端开发需要使用什么语言?
【8月更文挑战第22天】微信小程序的后端开发需要使用什么语言?
323 65
|
21天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
176 37
|
21天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑】设计模式——原型模式
对比原型模式和传统方式的实现思路、代码方案、优缺点,阐述原型模式的使用场景,以及深拷贝、浅拷贝等相关概念,并扩展原型模式在Spring源码中的应用。
【Java笔记+踩坑】设计模式——原型模式
|
8天前
|
JSON Java Maven
关于使用Java-JWT的笔记
这篇文章介绍了使用Java-JWT库来生成和验证JSON Web Tokens (JWT) 的方法。文中解释了JWT的组成,包括头部、载荷和签名,并提供了如何使用java-jwt库生成和验证token的示例代码。此外,还提供了Maven依赖和一些关于token的标准声明和自定义声明的解释。
关于使用Java-JWT的笔记
|
22天前
|
Java 开发者 数据格式
【Java笔记+踩坑】SpringBoot基础4——原理篇
bean的8种加载方式,自动配置原理、自定义starter开发、SpringBoot程序启动流程解析
【Java笔记+踩坑】SpringBoot基础4——原理篇
消息中间件 缓存 监控
81 0
|
22天前
|
运维 Java 关系型数据库
【Java笔记+踩坑】SpringBoot基础2——运维实用
SpringBoot程序的打包与运行、临时配置、多环境配置、日志
【Java笔记+踩坑】SpringBoot基础2——运维实用
|
22天前
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
22天前
|
SQL Java 数据库连接
【Java笔记+踩坑】MyBatisPlus基础
MyBatisPlus简介、标准数据层开发CRUD、业务层继承IService、ServiceImpl、条件查询、LambdaQueryWrapper、id生成策略、逻辑删除、乐观锁@Version、代码生成器、ActiveRecord
【Java笔记+踩坑】MyBatisPlus基础
|
22天前
|
前端开发 Java 数据库连接
【Java笔记+踩坑】SpringBoot——基础
springboot三种配置文件及其优先级、多环境配置、springboot整合junit,mybatis、ssmp综合图书案例
【Java笔记+踩坑】SpringBoot——基础

热门文章

最新文章

下一篇
无影云桌面