初识websocket
Posted 大橙子最美丽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识websocket相关的知识,希望对你有一定的参考价值。
通过websocket实现发送地理位置
pom.xml
<!-- json --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.6</version> </dependency> <!--websocket --> <dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.1</version> <scope>provided</scope> </dependency>
UserDate是发送数据的实体类
public class UserData { private String userId; private float lng; private float lat; public String getUserId() { return userId; } public float getLng() { return lng; } public float getLat() { return lat; } public void setUserId(String userId) { this.userId = userId; } public void setLng(float lng) { this.lng = lng; } public void setLat(float lat) { this.lat = lat; } @Override public String toString() { return "UserData [userId=" + userId + ", lng=" + lng + ", lat=" + lat + "]"; } }
websocketTest具体代码
@ServerEndpoint("/websocket/{userId}") public class WebSocketTest{ private static ConcurrentHashMap<String,UserData> webSocketMap = new ConcurrentHashMap<String,UserData>(); // 与某个客户端的连接会话,需要通过它来给客户端发送数据 private Session session; /** * 连接建立成功调用的方法 * @param session 可选的参数。session为与某个客户端的连接会话,通过它来给客户端发送数据 * */ @OnOpen public void onOpen(Session session,@PathParam("userId")String userId){ if(userId==null){ return; } UserData data = webSocketMap.get(userId); if(data==null){ data = new UserData(); data.setUserId(userId); webSocketMap.put(userId, data); } } /** * 连接关闭时调用的方法 * */ @OnClose public void onClose(@PathParam("userId")String userId){ for (String key : webSocketMap.keySet()) { if(key.equals(userId)){ webSocketMap.remove(userId); } } } /** * 收到客户端消息后调用的方法 * @param message 客户端发送的消息 * @param session 可选的参数 * */ @OnMessage public void onMessage(String message, Session session) { System.out.println("来自客户端的消息:" + message); /* try { sendMessage(message,session); } catch (IOException e) { e.printStackTrace(); }*/ JSONObject jo = JSONObject.parseObject(message); String userId = (String) jo.get("userId"); UserData data =new UserData(); data.setLat(jo.getFloatValue("lat")); data.setLng(jo.getFloatValue("lng")); data.setUserId(userId); webSocketMap.put(userId, data); try { sendMessage(JSON.toJSONString(webSocketMap),session); } catch (IOException e) { e.printStackTrace(); } } public void sendMessage(String message,Session session) throws IOException{ if(session.isOpen()){ session.getAsyncRemote().sendText(message); } } }
页面就不放了
以上是关于初识websocket的主要内容,如果未能解决你的问题,请参考以下文章