java 用webScoket扫描登录
来源:互联网 发布:jquery获取表格数据 编辑:程序博客网 时间:2024/06/07 01:10
我用的是spring4.0,tomcat7 ,jdk1.7
**** jdk太低的不行 tomcat6以下好像也不行
jar包 websocket-api.jar(网上都有)
js代码
var websocket=mull;
var code=new Date();//唯一标识符
服务端
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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("/echo/{code}")
public class EchoSocket {
//把所有的session保存到map中
private static final List<Map<String, Session>> map = new ArrayList<Map<String, Session>>();
//静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
private static int onlineCount = 0;
//concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
//若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
private Session session;
/**
* 客户端有连接的时候就会调用这个方法
*/
@OnOpen
public void open(Session session,@PathParam("code") String code){
Map<String, Session> user = new HashMap<String, Session>();
user.put(code, session);//把客户端的session信息保存
map.add(user);
System.out.println("连接成功++++"+code);
try {
session.getBasicRemote().sendText("1001,连接成功");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 客户端连接断开就会调用此方法
*/
@OnClose
public void close(Session session,@PathParam("code") String code){
System.out.println(code + "连接关闭了");
map.remove(code);//关闭时map中移除
}
/**
* 接收到客户端的信息
* @param msg
* @param last
*/
@OnMessage
public void message(Session session,boolean last,@PathParam("code") String code){
System.out.println("客户端说" + code);
}
/**
*错误监听(当没有关闭socket连接就关闭浏览器会异常)
*/
@OnError
public void error(Session session, Throwable error){
String id = session.getId();
System.out.println("出错的session的id是" + id);
}
public EchoSocket(){
System.out.println("Socket对象创建");
//通过对象的创建可以知道不同socket之间的通信不会共享成员变量
}
/**
* 给某个用户发送消息
* @param userName
* @param textMessage
*/
public void sendMessageToUser(String index, String message) {
for (Map<String, Session> map1 : map) {
if (map1.containsKey(index)) {
try {
map1.get(index).getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
怎么在api中调用呢???????
@Controller
@RequestMapping("we")
public class ScanningGenController {
private Log logger = LogFactory.getLog(this.getClass());
@Autowired
private IScanningGenService scanningGenService;
@Autowired
private IUserInfoService userInfoService;
@Bean
public EchoSocket webSocketHandler() {
return new EchoSocket();
}
@ResponseBody
@RequestMapping("/addcode")
public Result addScanningGen(Map<String, Object> params) {
//自己的业务代码
webSocketHandler().sendMessageToUser(params.get("code").toString(),"登录成功”);//////发个客户端某一用户
}
}
- java 用webScoket扫描登录
- java webscoket聊天室
- java 扫描登录
- webscoket
- webScoket
- java使用webscoket小李子
- java实现二维码扫描登录
- Js WebScoket与Java WebSocket的通信
- WebScoket 规范
- WebScoket 规范
- Spring-WebScoket
- 微信扫描登录
- 二维码扫描登录
- Appscan cookie登录扫描
- 扫描二维码登录原理
- iOS 二维码扫描登录
- 网站扫描二维码登录
- 实现网站二维码扫描登录
- Swift 复杂数据类型排序
- pgsql 10.1 参数的初步了解 Preset Options
- 数十个行业经典视频教程分享--百度网盘资料
- spring mvc 5.0 REST详解 05 未完待续
- Git常用命令总结
- java 用webScoket扫描登录
- 优化网站加载时间(GTmetrix)
- OpenCV函数记录(一)
- 大话设计模式------开放-封闭模式
- linux-目录含义
- 写一个宏可以将一个数字的奇数位和偶数位交换
- http上传
- “放”而后能得
- http协议的分析