架构师之路(十一)
来源:互联网 发布:威露士极是洗发水 知乎 编辑:程序博客网 时间: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。
- 架构师之路(十一)
- 架构师之路(二十一)程序员多关注行业内领先技术
- 从菜鸟到架构师(十一)
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十一:JSSE(一):JSSE架构介绍
- 从菜鸟到架构师(二十一)
- swift学习之路(十一)函数
- Redis深入之路(十一)
- AngularJs学习之路(十一)
- PostgreSQL之精妙的数据库导入导出工具架构 (十一)
- 【Java安全技术探索之路系列:Java可扩展安全架构】之二十一:SASL(二):SASL类和接口.md
- Joomla 1.5架构(十一) model 包
- 架构师之路(二):架构设计
- 架构师之路
- 架构师之路
- 架构师之路
- 架构师之路
- 架构师之路
- 架构师之路
- Android开发笔记(十六)秋千摇摆动画SwingAnimation
- AES(Rijndael算法)
- Netty ByteBuf
- LeetCode 22 Generate Parentheses
- Linux按键驱动程序设计(2)-Linux中断处理程序
- 架构师之路(十一)
- select 动态改变显示不同内容
- LeetCode 216 Combination Sum III
- 第一场个人训练赛
- NAT技术与代理服务器调研
- 查看女神图片
- Git 指令备忘
- MarkDown常用语法
- python HTTP请求---使用urllib2