架构师之路(十一)

来源:互联网 发布:威露士极是洗发水 知乎 编辑:程序博客网 时间:2024/06/06 12:46
架构师之路(十一)
作为一名软件开发人员,成为架构师是追求之一。系统架构师的能力不仅仅体现在书写业务代码上,更重要的是系统的结构和性能,是否具有可拓展性、高并发性和稳定性。


websocket如何发送数据?

/**
* 发送数据
* @param msg
* @throws IOException
*/
public void sendMsg(String msg) throws IOException{
    try {
    if(this.session.isOpen()){
    this.session.getBasicRemote().sendText(msg);
    }
} catch (IOException e) {
this.session.close();
}
    }

直接调用当前session的方法,就可以发送数据了。


websocket如何配置?

在pom.xml文件里面导入websocket文件依赖包。

<!-- websocket -->
<dependency>
 <groupId>javax</groupId>
 <artifactId>javaee-api</artifactId>
 <version>7.0</version>
</dependency>


websocketPool连接池如何使用?

websocketPool连接池,可以把多个websocket对象放在已经封装好的连接池里面,这样可以方便的进行读取和调用连接池。

public static synchronized boolean addWebSocket(String key,WebSocket socket) {
Set<WebSocket> set = socketPool.get(key);
if (set == null) {
set = new HashSet<WebSocket>(0);
}
if(set.contains(socket)){
return true;
}
set.add(socket);
socketPool.put(key, (HashSet) set);
return true;
}



public static synchronized boolean removeWebSocket(String key,WebSocket socket) { 
if (StringUtils.isNotBlank(key)) {
socketPool.remove(key);
} else if (socket != null) {
  String socketId=socket.getId();
boolean breakFlag = false;
Set<String> keySet = socketPool.keySet();
for(Iterator<String> it=keySet.iterator();it.hasNext();){
String mapKey = it.next();
Set<WebSocket> webSocketSet = socketPool.get(mapKey);
for(WebSocket webSocket : webSocketSet){
if(webSocket.getId().equals(socketId)){
String id = socket.getId();
webSocketSet.remove(webSocket);
webSocket = null; //销毁对象

if(webSocketSet.size() == 0){
socketPool.remove(mapKey);
}
breakFlag= true;
break;
}
}
}
socket = null;//销毁对象
}
return true;
}

websoket重写方法?

//重写方法,是否含有对应的key信息
public static boolean containsKey(String key){
boolean breakFlag = false;
breakFlag = socketPool.containsKey(key);
   return breakFlag;
}
因为private static ConcurrentHashMap<String, HashSet<WebSocket>> socketPool = new ConcurrentHashMap<String, HashSet<WebSocket>>(
0);就是一个静态的ConcurrentHashMap。
所以只要清楚这个,就可以重写方法了,开心,小小的纪念。还有调试websocket的时候,如果js报错,那么整个js页面就无法响应websocket。

原创粉丝点击