java与与微微信信小小程程序序实实现现websocket长长连连接接
本文实例为大家分享了j ava与微信小程序实现websocket长连接的具体代码,供大家参考,具体内容 下
背背景景::
需要在小程序实现地图固定坐标下实时查看消息
j ava环境 :tomcat7 j dk1.7
1.java
websocket 类
package com.qs.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Print riter;
import .HttpURLConnection;
import .URL;
import java.util.concurrent.CopyOn riteArraySet;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import com.qs.controller.UserController;
/**
* @ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端
,
* 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到 ebSocket服务器端
*/
@ServerEndpoint("/websocket")
public class ebSocketTest {
//静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
private static int onlineCount = 0;
//concurrent包的线程安全Set,用来存放每个客户端对应的My ebSocket对象。若要实现服务端与单一客
户端通信的话,可以使用Map来存放,其中Key可以为用户标识
private static CopyOn riteArraySet< ebSocketTest> webSocketSet = new CopyOn riteArrayS
et< ebSocketTest>();
//与某个客户端的连接会话,需要通过它来给客户端发送数据
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)