架构师之路(十一)

架构师之路(十一)
作为一名软件开发人员,成为架构师是追求之一。系统架构师的能力不仅仅体现在书写业务代码上,更重要的是系统的结构和性能,是否具有可拓展性、高并发性和稳定性。


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。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值