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

转自:https://blog.csdn.net/manyouzhijian/article/details/54425456

用到的工具和技术.

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服务器端:

 


 
 
  1. package websocketTest;
  2. import java.io.IOException;
  3. import java.util.concurrent.CopyOnWriteArraySet;
  4. import javax.websocket.*;
  5. import javax.websocket.server.ServerEndpoint;
  6. /**
  7. * @ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端,
  8. * 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端
  9. */
  10. @ServerEndpoint( "/websocket")
  11. public class TestWebSocket {
  12. //静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
  13. private static int onlineCount = 0;
  14. //concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
  15. private static CopyOnWriteArraySet<TestWebSocket> webSocketSet = new CopyOnWriteArraySet<TestWebSocket>();
  16. //与某个客户端的连接会话,需要通过它来给客户端发送数据
  17. private Session session;
  18. /**
  19. * 连接建立成功调用的方法
  20. * @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
  21. */
  22. @OnOpen
  23. public void onOpen(Session session){
  24. this.session = session;
  25. webSocketSet.add( this); //加入set中
  26. addOnlineCount(); //在线数加1
  27. System.out.println( "有新连接加入!当前在线人数为" + getOnlineCount());
  28. }
  29. /**
  30. * 连接关闭调用的方法
  31. */
  32. @OnClose
  33. public void onClose(){
  34. webSocketSet.remove( this); //从set中删除
  35. subOnlineCount(); //在线数减1
  36. System.out.println( "有一连接关闭!当前在线人数为" + getOnlineCount());
  37. }
  38. /**
  39. * 收到客户端消息后调用的方法
  40. * @param message 客户端发送过来的消息
  41. * @param session 可选的参数
  42. */
  43. @OnMessage
  44. public void onMessage( String message, Session session) {
  45. System.out.println( "来自客户端的消息:" + message);
  46. //群发消息
  47. for(TestWebSocket item: webSocketSet){
  48. try {
  49. item.sendMessage(message);
  50. } catch (IOException e) {
  51. e.printStackTrace();
  52. continue;
  53. }
  54. }
  55. }
  56. /**
  57. * 发生错误时调用
  58. * @param session
  59. * @param error
  60. */
  61. @OnError
  62. public void onError(Session session, Throwable error){
  63. System.out.println( "发生错误");
  64. error.printStackTrace();
  65. }
  66. /**
  67. * 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。
  68. * @param message
  69. * @throws IOException
  70. */
  71. public void sendMessage( String message) throws IOException{
  72. this.session.getBasicRemote().sendText(message);
  73. //this.session.getAsyncRemote().sendText(message);
  74. }
  75. public static synchronized int getOnlineCount() {
  76. return onlineCount;
  77. }
  78. public static synchronized void addOnlineCount() {
  79. TestWebSocket.onlineCount++;
  80. }
  81. public static synchronized void subOnlineCount() {
  82. TestWebSocket.onlineCount--;
  83. }
  84. }
微信小程序客户端:
 
 
  
 
 

 
 
  1. var app = getApp()
  2. Page({
  3. onLoad: function(){
  4. wx.connectSocket({
  5. url: "ws://localhost:8080/TestYMG/websocket",
  6. })
  7. wx.onSocketOpen( function() {
  8. console.log( 'WebSocket连接已经打开!')
  9. wx.sendSocketMessage({
  10. data: 'HELLO,WORLD'+ Math.random()* 0XFFFFFF.toString()
  11. })
  12. });
  13. wx.onSocketMessage( function(data) {
  14. console.log(data);
  15. });

 
 
  1. //监听是否关闭
  2. wx.onSocketClose( function() {
  3. console.log( 'WebSocket连接已经关闭!')
  4. });
  5. },

 
 
  1. //手动关闭连接
  2. setclose: function(e){
  3. console.log( 'WebSocket连接正在关闭!')
  4. wx.closeSocket();
  5. }
  6. })

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值