架构师之路(十)
来源:互联网 发布:优易淘宝小号注册机 编辑:程序博客网 时间:2024/05/22 08:02
作为一名软件开发人员,成为架构师是追求之一。系统架构师的能力不仅仅体现在书写业务代码上,更重要的是系统的结构和性能,是否具有可拓展性、高并发性和稳定性。
最近一个人在写websocket服务端,最后完成了,有很多分享的地方,特意总结如下:
为什么要使用websocket?
websocket是基于和客户端浏览器保持长连接的服务,客户端定时请求服务端的websocket,websocket实时根据传递过来的session来进行发送消息msg,这样就能提高长连接。
websocket需要心跳?
客户端和服务器端的长连接,有时session会进行失效,所以需要客户端定时的发送一个心跳包,这个心跳包可以没有内容的,只需要让服务端进行响应,就能保持这个长连接。
websocket如何响应请求?
@ServerEndpoint(value = " /standardWebsocket")
这个表示直接url到这个地址就可以了。
/**
* 创建连接
* @param session
*/
@OnOpen
public void start(Session session) {
try {
this.session = session;
this.id = UUID.randomUUID().toString();
logger.info("连接websocket,id=" + this.id);
} catch (Exception ex) {
logger.error("WebSocket.start(Session session)方法发生错误:"
+ ExceptionUtil.getStackMsg(ex));
}
}
这个表示创建连接,也就是可以保存客户端的session。
/**
* 接收数据
* @param message
*/
@OnMessage
public void incoming(String message) {
try {
webSocketProcesser.process(message, this);
} catch (Exception ex) {
logger.error("WebSocket.incoming(String message)方法发生错误:"
+ ExceptionUtil.getStackMsg(ex));
}
}
这个表示接受数据的时候,响应对应的后台方法。
/**
* 关闭连接
*/
@OnClose
public void end() {
try {
try {
if (this.session != null) {
this.session.close();
}
} catch (IllegalStateException e) {
logger.info("WebSocket前端断开连接");
} catch (Exception e) {
logger.error("WebSocket关闭连接出错", e);
}
} catch (Exception ex) {
logger.error("WebSocket.end()方法发生错误:"
+ ExceptionUtil.getStackMsg(ex));
}
}
表示关闭连接的时候,清除对应的session。
- 架构师之路(十)
- 架构师之路(二十)项目的架构流程演化
- 从菜鸟到架构师(十)
- 通向架构师的道路(第二十一天)万能框架spring(三)之SSH
- 通向架构师的道路(第二十一天)万能框架spring(三)之SSH
- 通向架构师的道路(第二十一天)万能框架spring(三)之SSH
- 通向架构师的道路(第二十一天)万能框架spring(三)之SSH
- 通向架构师的道路(第二十一天)万能框架spring(三)之SSH
- 通向架构师的道路(第二十一天)spring(三)之SSH
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十:JCP(三):JCP编程模型
- 【Java安全技术探索之路系列:Java可扩展安全架构】之二十:SASL(一):SASL架构介绍.md
- 架构师之路(二):架构设计
- 架构师之路
- 架构师之路
- 架构师之路
- 架构师之路
- 架构师之路
- 架构师之路
- NOIP2017模拟赛(十二)总结
- B2Ctt商城05 前台首页商品展示
- 进程管理——基础概念
- 【HDU4498】Function Curve-分段+自适应Simpson积分法
- 聚合与组合的区别
- 架构师之路(十)
- 【Ex.】九九乘法表以及素数与否和闰年
- 隐式类型转换
- Altera新手教程
- 1050 循环数组最大子段和
- hadoop-2.8.0 WordCount单词计数和Sort示例
- LeetCode 136 Single Number
- 扩增子、宏基因组测序问题集锦
- scikit-learn数据预处理